March 26,2017
HTTP协议的主要特点可概括如下:
HTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本是HTTP/2.0。
HTTP/0.9 --> HTTP/1.0 --> HTTP/1.1 --> HTTP/2.0
分请求报文和响应报文,两者都由三部分组成,分别为(1)开始行;(2)首部行;(3)实体主体。请求报文和响应报文的区别就是开始行不同,请求报文的开始行叫请求行,响应报文的开始行叫状态行。
以下就是一个HTTP请求的报文
GET / HTTP/1.1 {开始行}
Host: www.baidu.com {以下首部行}
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
Cookie: BAIDUID=076785A54EE26AC59C5E1829E85D0C3A:FG=0; ...省略%¥&&
请求方法汇总:
方法 | 意义 |
---|---|
GET | 向服务器发出指定资源的请求 |
POST | 提交 |
PUT | 更新 |
DELETE | 删除 |
HEAD | 向服务器发出指定资源的请求,服务器不传回资源的本文部分 |
TRACE | 用来进行环回测试的请求报文 |
OPTION | 请求一些选项信息 |
CONNECT | 用于代理服务器 |
有好几行,也可以不使用。每行结束都要回车换行。比如:
Host: www.baidu.com {给出主机的域名}
Connection: keep-alive {告诉服务器持久连接,TCP连接不关闭,可以被多个请求复用}
Pragma: no-cache {用来包含实现特定的指令}
Cache-Control: no-cache {指定请求和响应遵循的缓存机制:必须先与服务器确认返回的响应是否被更改,然后才能使用该响应来满足后续对同一个网址的请求。}
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) {发出请求的用户信息}
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 {声明客户端接受的数据格式}
Accept-Encoding: gzip, deflate, sdch, br {声明浏览器接受的压缩方法}
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6 {声明浏览器接受的文档语言}
Cookie: BAIDUID=076785A54EE26AC59C5E1829E85D0C3A:FG=0; ...省略%¥&& {HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器}
{请求报文的最后还有一个空行}
请求报文一般不用这个字段。
HTTP/1.1 200 OK {开始行}
Server: bfe/1.0.8.18 {以下首部行}
Date: Thu, 27 Apr 2017 08:44:19 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Cache-Control: private
Cxy_all: baidu+c6a5ef49afa731f08bd67d11b5dadae9
Expires: Thu, 27 Apr 2017 08:43:46 GMT
X-Powered-By: HPHP
X-UA-Compatible: IE=Edge,chrome=1
Strict-Transport-Security: max-age=172800
BDPAGETYPE: 1
BDQID: 0x85b139100007637d
BDUSERID: 0
Set-Cookie: BDSVRTM=0; path=/
Content-Encoding: gzip
HTTP/1.1 200 OK
,HTTP/1.1 400 Bad Request
,HTTP/1.1 404 Not Found
所有的状态码如下:
状态码 | 意义 |
---|---|
1XX | 指示信息,请求已经接收了,继续处理 |
2XX | 成功,处理掉 |
3XX | 重定向 进一步操作 |
4XX | 客户端错误 |
5XX | 服务器端错误 |
常见状态码
状态码 | 意义 |
---|---|
200 | OK |
400 | 客户端请求语法错误,服务器端不能理解 |
401 | 请求没有经过授权 |
403 | 服务器端接到请求,拒绝服务,可能没有权限 |
404 | 请求资源不存在 |
500 | 服务器端发生不可预期的错误 |
503 | 服务器端当前不能处理请求,可能要过段时间才能恢复正常 |
Server: bfe/1.0.8.18 {web服务器软件名称}
Date: Thu, 27 Apr 2017 08:44:19 GMT {原始服务器消息发出的时间}
Content-Type: text/html; charset=utf-8 {返回数据的格式}
Transfer-Encoding: chunked {表明回应将由数量未定的数据块组成}
Connection: keep-alive {连接:持久连接}
Vary: Accept-Encoding {告诉下游代理是使用缓存响应还是从原始服务器请求}
Cache-Control: private {告诉所有的缓存机制是否可以缓存及哪种类型:内容只缓存到私有缓存中}
Cxy_all: baidu+c6a5ef49afa731f08bd67d11b5dadae9
Expires: Thu, 27 Apr 2017 08:43:46 GMT {响应过期的日期和时间}
X-Powered-By: HPHP
X-UA-Compatible: IE=Edge,chrome=1
Strict-Transport-Security: max-age=172800
BDPAGETYPE: 1
BDQID: 0x85b139100007637d
BDUSERID: 0
Set-Cookie: BDSVRTM=0; path=/ {设置Http Cookie}
Content-Encoding: gzip {数据的压缩方法}
几个链接,自己有空再深入了解下
(完)
上一篇 下一篇