HTTP报文

1、报文语法

1.1 报文组成

报文由三部分组成:起始行、首部、以及可选的主体部分。
报文分为请求报文、响应报文。
HTTP报文

1.2 报文格式

HTTP报文

method:方法 客户端希望服务器执行的动作,如GET、POST
request-URL:请求url 指定资源位置
version:版本 格式为http/主版本号.副版本号
status:状态码
reason-phrase:原因短语 如OK
header:首部
entity-body:实体部分

如:
HTTP报文

1.3 起始行

1.3.1 请求行
请求报文的起始行称为请求行,请求服务器对资源进行一些操作。由一个方法,一个请求url和http的版本。所有字段由空格符分隔

1.3.2 响应行
响应报文的起始行称为响应行,承载了状态信息和操作产生的结果数据。

1.4 方法

1.4.1 GET
GET是最常用的方法。通常用于请求服务器发送某个资源

1.4.2 HEAD
HEAD方法与GET类似,但是服务器只会返回头部而不会返回实体。
使用HEAD的情况:
在不获取资源,只是了解资源的情况。如判断资源的类型
通过响应码的状态判断资源是否存在
通过查看首部,测试资源是否被修改

1.4.3 PUT
put方法会向服务器写入文档。让服务器用请求的主体部分创建一个新文档,或者覆盖一个已存在的文档。所以通常要求在put方法前需要用户名和密码

1.4.4 POST
通常使用POST来支持HTML的表单

1.4.5 TRACE
主要用于诊断。客户端发起一个请求时,可能需要穿过防火墙、代理、网官等,每个中间环节都可能修改原始http。trace请求会在请求的最后一站的服务器弹回一个TRACE响应,并在主体中携带它收到的原始原始请求报文。这样客户端就可以查看原始报文是否以及如何被修改过。
HTTP报文

1.4.6 OPTIONS
客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。

1.4.7 DELETE
请求服务器删除url指向的资源。

1.5 状态码

1.5.1 100~199 信息性状态码
1.5.2 200~299 成功状态码
1.5.3 300~399 重定向状态码
1.5.4 400~499 客户端错误状态码
15.5 500~599 服务器错误状态码

1.6 首部

首部分为五类
1.6.1 通用首部:
在服务端和客户端都可以使用的通用首部
HTTP报文

1.6.2 请求首部:
请求报文特有的
HTTP报文
还有accept首部、条件请求首部、安全请求首部、代理请求首部

1.6.3 响应首部:
响应报文特有的
HTTP报文
还有协商首部、安全响应首部

1.6.4 实体首部
用于描述http报文的负荷
HTTP报文
HTTP报文
还有实体缓存首部