HTTP协议

HTTP协议的请求和响应报文都是由报文首部、空行和报文主体组成的,报文首部又分为:请求行或状态行、首部字段。

请求行

请求行是存在于请求报文中的,其组成为:

请求方法 请求URL HTTP版本

HTTP的请求方法:

请求方法 功能描述 是否包含主体数据
GET 从服务器获取文本
POST 向服务器发送客户端数据
PUT 上传客户端的文件到服务器
DELETE 从服务器上删除一个文件
HEAD 只获取服务器的响应首部
OPTIONS 获取服务器可以执行的方法
TRACE 对经过代理服务器的报文进行追踪

状态行

状态行是存在于响应报文中的,其组成为:

HTTP版本 状态码 描述短语

HTTP响应报文状态码:

状态码范围 状态码类别 典型状态码 描述短语 含义
1xx 信息类状态码 100 Continue 收到请求初始部分,请继续发送
2xx 成功状态码 200 OK 请求已被正常处理
2xx 成功状态码 204 No Content 请求被成功处理,但没有主体数据
2xx 成功状态码 206 Partial Content 对资源部分请求成功
3xx 重定向状态满 301 Moved Permanently 永久性重定向,请求的URL资源已被更新,响应首部包含新的URL
3xx 重定向状态码 302 Found(HTTP/1.1)、Move Temporarily(HTTP/1.0) 临时性重定向,请求的URL资源临时更新
3xx 重定向状态码 304 Not Modified 这是用于缓存目的。它告诉客户端的响应没有被修改,所以客户端可以继续使用的响应相同的缓存版本。
4xx 客户端错误状态码 400 Bad Request 客户端发送一个错误请求
4xx 客户端错误状态码 401 Unauthorized 请求需要包含通过HTTP认证信息
4xx 客户端错误状态码 403 Forbidden 访问被拒绝
4xx 客户端错误状态码 404 Not Found 未找到请求的URL资源
5xx 服务器错误状态码 500 Internal Server Error 服务器出现错误,无法提供请求的资源
5xx 服务器错误状态码 503 Service Unavailable 服务器正忙,无法提供正常请求服务

首部字段

通用首部字段

通用首部字段无论是在请求报文中还是响应报文中都可以使用,主要用于描述HTTP协议本身。

通用首部字段名 功能说明
Connection 用于指定客户端/服务器间连接的选项,例如指定连续连接或者通过”close"选项通知服务器在响应完成后关闭连接
Date 报文创建日期
Transfer-Encoding 指定报文主体数据的编码方式
Update 发送端协议准备升级为新版本
Via 报文经过中间节点(网关、代理等)信息
Cache-Control 指定缓存行为
Warning 错误通知

请求首部字段

请求首部字段存在于HTTP请求报文中,主要描述客户端的版本、处理能力等信息。

请求首部字段名 功能说明
Accept 客户端可处理的媒体类型
Accept-Charset 客户端优先接收的字符集
Accept-Encoding 客户端优先接收的编码方式,如gzip
Accept-Language 客户端希望的语言种类
Authorization 授权信息,通常用于对服务器发送的WWW-Authorization首部进行应答
Cookie 用于客户端向服务器发送Cookie信息
Cookie2 用来说明客户端支持的Cookie版本
From 客户端的E-mail地址
Host 请求资源所在服务器的主机和端口
If-Modified-Since 只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304 Not Modified
Referer 包含一个URL,客户端从该URL页面出发访问请求页面
User-Agent 用户代理,客户端信息
UA-OS 客户端主机上的操作系统名称、版本等信息
UA-Pixels 客户端显示器像素信息

响应首部字段

响应首部字段存在于响应报文中,主要用于描述响应主机的信息、功能等。

响应首部字段名 功能含义
Age 响应资源创建的时间
Set-Cookie 在客户端设置一个Cookie,服务器用来对客户端进行标识
Server 服务器应用程序软件的名称、版本等信息
Retry-After 当资源不可用时,在此期间再次发送请求
Refresh 表示浏览器应该在多长时间之后刷新文档,以秒计

实体首部字段

实体首部字段用于描述HTTP报文主体数据的字段,可以同时存在于请求报文中和响应报文中。如,实体信息类型、长度、压缩方法等。

实体首部字段名 功能含义
Allow 资源主体可以支持的HTTP请求方法
Content-Location 通知接收端主体的URL,用于接收端定位到该资源
Content-Encoding 主体适用的编码方式
Content-Language 解释主体时使用的语言
Content-Length 主体的大小,通常以字节数表示
Content-MD5 主体的MD5校验和
Content-Type 主体的对象类型