相关文章推荐
贪玩的西瓜  ·  Python中的最大递归深度是多少,如何增加 ...·  1 年前    · 
不羁的番茄  ·  Python中地理坐标的区域元素·  2 年前    · 
行走的豆芽  ·  MySQL中将查询出来的值null转为0的方 ...·  2 年前    · 
谈吐大方的消炎药  ·  用BeautifulSoup来煲美味的汤 ...·  2 年前    · 
Code  ›  Http的headers最详解释开发者社区
submit http请求
https://cloud.tencent.com/developer/article/1583793
坐怀不乱的乌冬面
2 年前
作者头像
php007
0 篇文章

Http的headers最详解释

前往专栏
腾讯云
备案 控制台
开发者社区
学习
实践
活动
专区
工具
TVP
文章/答案/技术大牛
写文章
社区首页 > 专栏 > PHP专享栏 > 正文

Http的headers最详解释

发布 于 2020-02-14 16:13:28
2.2K 0
举报

一.HTTP Headers

HTTP Headers是HTTP请求和相应的核心,它承载了关于客户端浏览器,请求页面, 服务器 等相关的信息。

二.ThinkPHP不同版本比较:

  • getallheaders() 用来获取请求头部. 你也可以使用 $_SERVER 数组.
  • headers_list() 用来获取响应头部.(这个和tp5之后的版本差别有点大, Request::header();tp5已经将post,get,header做了分离,很符合实际使用的习惯)

文章下面将会看到一些使用php示范的例子。

HTTP Request 的结构

被称作“first line”的第一行包含三个部分:

  • “method” 表明这是何种类型的请求. 最常见的请求类型有 GET, POST 和 HEAD.
  • “path” 体现的是主机之后的路径. 例如,当你请求 “http://net.tutsplus.com/tutorials/other/top-20-mysql-best-practices/”时 , path 就会是 “/tutorials/other/top-20-mysql-best-practices/”.
  • “protocol” 包含有 “HTTP” 和版本号, 现代浏览器都会使用1.1.

剩下的部分每行都是一个“Name:Value”对。它们包含了各式各样关于请求和你浏览器的信息。例如”User-Agent“就表明了你的浏览器版本和你所用的操作系统。”Accept-Encoding“会告诉服务器你的浏览可以接受类似gzip的压缩输出。

这些headers大部分都是可选的。HTTP 请求甚至可以被精简成这样子:

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com

并且你仍旧可以从服务器收到有效的响应。

请求类型

三种最常见的请求类型是:GET,POST 和 HEAD ,从html的编写过程中你可能已经熟悉了前两种。

GET:获取一个文档

大部分被传输到浏览器的html, images, js, css, … 都是通过GET方法发出请求的。它是获取数据的主要方法。

例如,要获取Nettuts+ 的文章,http request的第一行通常看起来是这样的:

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1

一旦html加载完成,浏览器将会发送GET 请求去获取图片,就像下面这样:

GET /wp-content/themes/tuts_theme/images/header_bg_tall.png HTTP/1.1

表单也可以通过GET方法发送,下面是个例子:

<form action="foo.php" method="GET">
First Name: <input name="first_name" type="text"/>
Last Name: <input name="last_name" type="text"/>
<input name="action" type="submit" value="Submit"/>
</form>

当这个表单被提交时,HTTP request 就会像这样:

GET /foo.php?first_name=John&last_name=Doe&action=Submit HTTP/1.1
...

你可以将表单输入通过附加进查询字符串的方式发送至服务器。

POST:发送数据至服务器

尽管你可以通过GET方法将数据附加到url中传送给服务器,但在很多情况下使用POST发送数据给服务器更加合适。通过GET发送大量数据是不现实的,它有一定的局限性。

用POST请求来发送表单数据是普遍的做法。我们来把上面的例子改造成使用POST方式:

<form action="foo.php" method="POST">
First Name: <input name="first_name" type="text"/>
Last Name: <input name="last_name" type="text"/>
<input name="action" type="submit" value="Submit"/>
</form>

提交这个表单会创建一个如下的HTTP 请求:

POST /foo.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
 
推荐文章
贪玩的西瓜  ·  Python中的最大递归深度是多少,如何增加?_python_Mangs-Python
1 年前
不羁的番茄  ·  Python中地理坐标的区域元素
2 年前
行走的豆芽  ·  MySQL中将查询出来的值null转为0的方法_mysqlnull转换为0_命中的缘分的博客-CSDN博客
2 年前
谈吐大方的消炎药  ·  用BeautifulSoup来煲美味的汤 - 腾讯云开发者社区-腾讯云
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号