HTTP报文介绍

来源:互联网 发布:人工智能技术发展趋势 编辑:程序博客网 时间:2024/06/05 02:31
HTTP报文分为HTTP/1.0和HTTP/1.1。
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的持久连接。

请求报文格式如下:

请求行

请求头

空行

请求数据

其中请求行包括:请求方法、请求URI、协议版本
常见的请求方法:

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