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
字段由服务器返回给客户端,指明资源最终修改的时间。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战