HTTP/1.0是使用最为广泛的HTTP版本,他在HTTP/0.9的基础上添加了HTTP请求头,支持了更多的请求的方法,并能对多媒体对象进行处理。HTTP/1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次与服务器简历连接都要建立一个TCP连接,服务器完成请求处理后就会断开TCP连接。
HTTP/1.1修复了HTTP设计中的缺陷,是当前互联网主流的HTTP版本。在连接方面,HTTP/1.1支持持久连接,在一个TCP连接上可以传递多个HTTP请求和响应,减少了建立和关闭连接的消耗和时间延迟。HTTP/1.1在HTTP/1.0的请求头/响应头的基础上添加了更多的信息。Host主机头功能,可以让web浏览器根据主机头确定要访问的服务器的web站点。Keep-alive,用来实现HTTP/1.1的持久连接。
请求报文格式如下:
|
请求行 |
请求头 |
空行 |
请求数据 |
常见的请求方法:
|
HTTP请求方法 |
作用 |
|
GET |
客户端请求指定资源信息,服务器返回指定的资源 |
|
HEAD |
只请求响应报文中的HTTP首部 |
|
POST |
将客户端的数据提交到服务器 |
|
PUT |
用从客户端想服务器传送的数据取代指定的文档内容 |
|
DELETE |
请求服务器删除Request-URI所标识的资源 |
|
MOVE |
请求服务器将指定的页面移至另一个网络地址 |
其中POST、DELETE、PUT、GET是对资源的“增删改查操作”HEAD一般用于对于连通性的测试(如在七层负载均衡中的健康检查),MOVE的请求方法还没见过…..
请求头中的内容:
|
Header |
作用 |
|
Accept |
指定客户端能够接受的内容类型 |
|
Accept-Charset |
浏览器可以接受的字符编码集 |
|
Accept-Enconding |
指定浏览器可以支持的web服务器返回内容压缩编码类型 |
|
Accept-Language |
浏览器可接受的语言 |
|
Accept-Ranges |
可以请求网页实体的一个或者多个子范围字段 |
|
Authorization |
HTTP授权的授权证书 |
|
Cache-Control |
指定请求和响应遵循的缓存机制 |
|
Connection |
表示是否需要持久连接(HTTP/1.1默认持久连接) |
|
Cookie |
HTTP请求发送时,会把保存在盖请求域名下的所有cookie值一起发送给web服务器 |
|
Content-Length |
请求的内容长度 |
|
Content-Type |
请求与实体对应的MIME信息 |
|
Date |
请求发送的日期和时间 |
|
Expect |
请求的特定的服务器行为 |
|
From |
发出请求的用户的Email |
|
Host |
指定请求的服务器的域名、站定、端口号 |
|
If-Match |
只有请求内容与实体相匹配才有效 |
|
If-None-Match |
如果内容未改变发挥304,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变 |
|
If-Range |
如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体参数也为Etag |
|
If-Unmodified-Since |
只在实体在指定时间之后未被修改才请求成功的 |
|
Max-Forward |
限制信息通过代理和网关传送的时间 |
|
Pragma |
用来包含实现特定的指令 |
|
Proxy-Authorization |
连接到代理的授权证书 |
|
Range |
只请求实体的一部分,指定范围 |
|
Referer |
先前网页的地址,当前请求网页紧随其后,即来路 |
|
TE |
客户端愿意接受的传输编码,并通知服务器接受 接受尾加头信息 |
|
Upgrade |
向服务器指定某种传输协议以便服务器进行转换 |
|
User-Agent |
User-Agent的内容包含发出请求的用户信息 |
|
Via |
通知中间网关活代理服务器地址,通信协议 |
|
Warning |
关于消息实体的警告 |
空行:最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。
请求数据:请求数据不在GET方法中,应该与POST等方法进行使用时才包含。
GET方法的报文抓取如下:
可以在浏览器中查看请求信息:
响应报文格式如下:
|
状态行 |
响应头 |
响应正文 |
状态行:状态行通过提供一个状态吗来说明所请求的资源情况
不同范围的状态码及其对应的作用:
|
状态码范围 |
作用 |
|
100~199 |
用于指定客户端响应的某些动作 |
|
200~299 |
用于表示请求成功 |
|
300~399 |
用于已经移动的文件,并且常被包含在定位头信息中指定新的地址信息 |
|
400~499 |
用于指出客户端的错误 |
|
500~599 |
用于指出服务器的错误 |
常用的状态码:
|
状态码 |
详细描述说明 |
|
200-OK |
服务器成功返回网页,这是成功的HTTP请求返回的标准状态码 |
|
301 |
永久跳转,所请求的网页将永久跳转到被设定的新位置 |
|
403 |
禁止访问,虽然这个请求是合法的,但是服务器端因为匹配了预先设置的规则而拒绝客户端的请求,此类问题一般为服务器或服务权限设置不但所致 |
|
404 |
服务器找不到客户端请求的指定页面,可能是客户端请求了服务器上不存在的资源所致 |
|
500 |
内部服务器错误,服务器遇到了意料不到的情况,不能完成客户的请求。这是一个较为笼统的报错,一般为服务器的设置或内部程勋问题导致。例如:Selinux开启,而有没有为HTTP设置规则许可,客户端访问就是500 |
|
502 |
坏的网关,一般是代理服务器请求后端服务器时,后端服务器不可用或没有完成相应网关服务器。这通常为返乡代理服务器下面的节点出问题所致 |
|
503 |
服务当前不可用,可能是服务器超载或停机维护导致的,或者是反向代理服务器后面没有可以提供的服务的节点 |
|
504 |
网关超时,一般是网关代理服务器请求后端服务器时,后端服务没有在特定的时间内完成处理请求。多数是服务器过载导致没有在指定的时间内返回数据给前端代理服务器 |
响应头:请求头类似,为响应头添加了一些附加信息
|
Header |
作用 |
|
Accept-Ranges |
表明服务器是否支持指定范围请求及哪种类型的分段请求 |
|
Age |
从原始服务器到代理缓存形成的估算时间(以秒计,非负) |
|
Allow |
对某网络资源的有效的请求行为,不允许则返回405 |
|
Cache-Control |
告诉所有的缓存机制是否可以缓存及哪种类型 |
|
Content-Encoding |
web服务器支持的返回内容压缩编码类型。 |
|
Content-Language |
响应体的语言 |
|
Content-Length |
响应体的长度 |
|
Content-Location |
请求资源可替代的备用的另一地址 |
|
Content-MD5 |
返回资源的MD5校验值 |
|
Content-Range |
在整个返回体中本部分的字节位置 |
|
Content-Type |
返回内容的MIME类型 |
|
Date |
原始服务器消息发出的时间 |
|
ETag |
请求变量的实体标签的当前值 |
|
Expires |
响应过期的日期和时间 |
|
Last-Modified |
请求资源的最后修改时间 |
|
Location |
用来重定向接收方到非请求URL的位置来完成请求或标识新的资源 |
|
Pragma |
包括实现特定的指令,它可应用到响应链上的任何接收方 |
|
Proxy-Authenticate |
它指出认证方案和可应用到代理的该URL上的参数 |
|
refresh |
应用于重定向或一个新的资源被创造,在5秒之后重定向(由网景提出,被大部分浏览器支持) |
|
Retry-After |
如果实体暂时不可取,通知客户端在指定时间之后再次尝试 |
|
Server |
web服务器软件名称 |
|
Set-Cookie |
设置Http Cookie |
|
Trailer |
指出头域在分块传输编码的尾部存在 |
|
Transfer-Encoding |
文件传输编码 |
|
Vary |
告诉下游代理是使用缓存响应还是从原始服务器请求 |
|
Via |
告知代理客户端响应是通过哪里发送的 |
|
Warning |
警告实体可能存在的问题 |
|
WWW-Authenticate |
表明客户端请求实体应该使用的授权方案 |
响应数据:在请求网页是会返回HTML代码
抓取的报文:
浏览器中的报文:
————————————
【1】:http://blog.csdn.net/zhangliang_571/article/details/23508953
【2】:https://www.cnblogs.com/louis2008/p/baowen.html
【3】:http://blog.csdn.net/yipiankongbai/article/details/24176693