HTTP首部

HTTP首部

一、HTTP报文的结构

1. 请求报文

请求报文即为:请求行请求头空行请求体请求行请求头组成请求报文的首部,如下图

红框即为请求行,剩下为请求头:

请求行由:请求的方法 URI 协议名称及版本号组成

2. 响应报文

请求报文即为:响应行响应头空行响应体响应行响应头组成响应报文的首部,如下图

红框即为响应行,剩下为响应头:

响应行由:协议名称及版本号 状态码 状态码的字符表达组成

3. HTTP首部字段

请求头和响应头均是由HTTP首部字段组成。如下图:

二、HTTP首部字段

1. 请求首部字段

请求首部字段是从客户端往服务器端发送请求报文中所使用的字段,用于补充请求的附加信息、客户端信息、对响应内容相关的优先级等内容。

1.1 Accept

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/png

Accept 字段告诉服务器,客户端想要接收什么样的媒体类型。

  • 文本文件

    text/html,text/css......

  • 图片文件

    image/jpeg,image/png,image/gif......

  • 视频文件

    video/mpeg,.......

  • 应用程序使用的二进制文件

    application/zip,.....

q=0 - 1;指定权重,范围在0 ~ 1 之间。

1.2 Accept-Charest

Accept-Charest: unicode-1-1,iso-8859-5;q=0.8

告知服务器,客户端可以支持的字符集

1.3 Accept-Encoding

Accept-Encoding: gzip, deflate

告知服务器,客户端可以支持的内容编码格式

1.4 Accept-Language

Accept-Language: zh-CN,zh;q=0.9,en;q=0.8

告知服务器,客户端可以支持的语言集

1.5 Authorization

Authorization: 

告知服务器,客户端用户认证信息。可放Token值在此,进行身份验证。

1.5 If-Modified-Since

If-Modified-Since: Mon, 14 Feb 2022 13:34:27 GMT

附带条件,如果所请求的资源最后一次更新时间与If-Modified-Since的值相同,则服务器给客户端返回304的状态码,表示资源未修改,使用本地缓存文件。如果当前的If-Modified-Since的值早于服务器中资源最后更新时间,则返回最新的资源。

1.6 If-None-Match

If-None-Match: 123456

附带条件,如果所请求的资源状态 Etag 值与If-None-Match的值相同,则服务器给客户端返回304的状态码,表示资源未修改,使用本地缓存文件。如果当前的If-None-Match的值不等于服务器中资源的唯一状态码Etag值,则返回最新的资源。

1.7 If-Range

If-Range: 123456
Range: bytes=5001-10000

If-Range字段值若是跟资源的 Etag 值或者资源更新的日期一致的话,那就作为范围请求(从5001字节到10000字节),服务器返回206状态码;若不一致,则请求全部资源。

1.8 Range

Range: bytes=5001-10000

对于只需获取部分资源的范围请求,包含首部字段Range即可告知服务器资源的指定范围。

1.9 Host

Host: www.baidu.com

告知服务器,请求的资源所处的互联网主机名称和端口号。

1.10 Referer

Referer: http://www.xxx.com/index.html

告知服务器本次请求的原始资源的URI,即来源路径。

1.11 等........

2. 响应首部字段

响应首部字段是由服务器端想客户端返回响应报文中所使用的字段,用于补充响应的附加信息、服务器信息,以及对客户端的附加要求灯信息。

2.1 Accept-Ranges

Accept-Ranges: bytes

用于告知客户端,服务器端可以接收范围请求。Accept-Ranges有两种取值,none和bytes。

2.2 Etag

Etag:765776

Etag字段值标识资源版本号,只要资源更新版本号就会改变。服务器返回资源的版本号,当下一次客户端发送资源请求会携带上 Etag 的值,服务器根据此值是否与服务器内资源的版本号一致与否,决定返不返回资源。不返回资源则状态码为304。

2.3 Location

Location:http://www.baidu.com/index.html

Location可以使接收此响应的客户端转到新的 URI 地址。基本上,该字段会配合3XX状态码,表示重定向操作。

2.4 Server

Server:Apache/2.2.17(Unix)

Server告知客户端当前服务器上安装的HTTP服务器应用程序的信息。

3. 通用首部字段

通用首部字段是指,请求报文和响应报文双方都会用到的首部

3.1 Cache-Control

Cache-Control:private, max-age=0, no-cache

Cache-Control包含多个指令:

  • no-cache

    每次都向服务器验证资源有效性

  • no-store

    不保存缓存,每次都向服务器请求资源

  • max-age=[ 秒 ]

    规定资源的缓存最大时间

  • public

    规定资源可以在中间代理服务器被缓存

  • private

    规定资源只能在目标客户端上缓存

3.2 Connection

Connection:keep-alive 或 close

Connection值为 keep-alive,表示当前http连接为持久连接,可以在连接上连续发送请求。当服务器想明确断开连接时,将Connection值设为 close

3.3 Date

Date:Tue Apr 12 2022 13:03:09 GMT

Date字段表明创建HTTP报文的日期和时间。

4. 实体首部字段

实体首部字段是包含在请求报文和响应报文中的实体部分所使用的首部,用于补充内容的更新时间和实体相关的信息。

4.1 Allow

Allow:GET, HEAD

Allow字段用于通知客户端能够支持Request-URI指定资源的所有HTTP方法。

4.2 Content-Encoding

Content-Encoding:gzip

Content-Encoding会告知客户端服务器对实体的主体部分选用的内容编码方式。

4.3 Content-Language

Content-Language:zh-CN

Content-Language会告知客户端,实体的主体部分使用的自然语言。

4.4 Content-Length

Content-Length:15000

Content-Length表明了实体的主体部分的大小(单位是字节)。

4.4 Content-Type

Content-Type:text/html;charset=UTF-8

Content-Type表明了实体主体内对象的媒体类型。

4.5 Expires

Expires:Tue Apr 12 2022 13:03:09 GMT

Expires字段会将资源失效的日期告知客户端。当前日期还未到达资源失效日期时,就会使用本地缓存。

4.6 Last-Modified

Last-Modified:Tue Apr 12 2022 13:03:09 GMT

Last-Modified字段由服务器返回给客户端,指明资源最终修改的时间。

posted @ 2022-04-12 13:29  青柠i  阅读(44)  评论(0编辑  收藏  举报