请求头部字段
一、Accept
1.1 认识
Accept
指定客户端能够接收的内容类型。可选值为: text/plain
、text/html
1.2 语法
Accept: text/plain, text/html
二、Accept-Charset
2.1 认识
Accept-Charset
浏览器可以接受的字符编码集。可选值为: iso-8859-5
2.2 语法
Accept-Charset: iso-8859-5
三、Accept-Encoding
3.1 认识
Accept-Encoding
指定浏览器可以支持的web服务器返回内容压缩编码类型。可选值为: compress
、gzip
3.2 语法
Accept-Encoding: compress, gzip
四、Accept-Language
4.1 认识
Accept-Language
浏览器可接受的语言。可选值为: en
、zh
4.2 语法
Accept-Language: en,zh
五、Accept-Ranges
5.1 认识
Accept-Ranges
可以请求网页实体的一个或者多个子范围字段。可选值为: bytes
5.2 语法
Accept-Ranges: bytes
六、Authorization
6.1 认识
Authorization
HTTP授权的授权证书。可选值为: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
6.2 语法
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
七、Cache-Control
7.1 认识
Cache-Control
指定请求和响应遵循的缓存机制。可选值为: no-cache
7.2 语法
Cache-Control: no-cache
八、Connection
8.1 认识
Connection
表示是否需要持久连接。(HTTP 1.1默认进行持久连接)。可选值为: close
8.2 语法
Connection: close
九、Cookie
9.1 认识
Cookie
HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。可选值为: $Version=1; Skin=new;
9.2 语法
Cookie: $Version=1; Skin=new;
十、Content-Length
10.1 认识
Content-Length
请求的内容长度。可选值为: 348
10.2 语法
Content-Length: 348
十一、Content-Type
11.1 认识
Content-Type
请求的与实体对应的MIME信息。可选值为: application/x-www-form-urlencoded
、application/json
、text/html
、text/plain
、video/avi
、video/mpeg4
、image/jpeg
、image/png
11.2 语法
Content-Type: <media-type>; <charset>; <boundary>
-
media-type
: 资源或数据的MIME
类型。MIME
类型通常仅包含两个部分: 类型(type
) 和 子类型(subtype
),中间由斜杠/
分割,中间没有空白字符type/subtype
-
charset
: 字符编码标准。不区分大小写,推荐使用小写。 -
boundary
: 对于多部分实体,必须使用boundary
指令。该指令由1
至70
个字符组成,这些字符选自一套已知能通过电子邮件网关的、非常健壮的字符集(并且不以空白字符结束)。它用于封装信息多个部分的边界。通常情况下,开头的边界前会加上两个破折号,而末尾边界的后面也会加上两个破折号。
11.3 MIME
Font
格式
JSON
格式
-
application/json
-
application/scim+json
-
application/csp-report
-
application/vnd.api+json
-
application/reports+json
-
application/json-patch+json
-
application/x-www-form-urlencoded
Text
格式:
-
text/css
-
text/xml
-
text/html
-
text/plain
-
text/javascript
Model
格式
Audio
格式
-
audio/webm
-
audio/ogg
Video
格式
-
video/webm
-
video/ogg
Image
格式:
-
image/apng
-
image/avif
、 -
image/gif
-
image/jpeg
-
image/png
-
image/svg+xml
-
image/webp
Message
格式
Multipart
格式
-
multipart/form-data
:multipart/form-data
可用于HTML
表单从浏览器发送信息给服务器。 -
multipart/byteranges
: 用于把部分的响应报文发送回浏览器。
十二、Date
12.1 认识
Date
请求发送的日期和时间。可选值为: Tue, 15 Nov 2010 08:12:31 GMT
12.2 语法
Date: Tue, 15 Nov 2010 08:12:31 GMT
十三、Expect
13.1 认识
Expect
请求的特定的服务器行为。可选值为: 100-continue
13.2 语法
Expect: 100-continue
十四、From
14.1 认识
From
发出请求的用户的Email。可选值为: user@email.com
14.2 语法
From: user@email.com
十五、Host
15.1 认识
Host
指定请求的服务器的域名和端口号。可选值为: www.zcmhi.com
15.2 语法
Host: www.zcmhi.com
15.3 对比
-
Host:
-
Origin: 表示当前客户端页面地址
- 格式: 协议+域名+端口
- 应用场景: 用于
Cors
请求和同域POST
请求 - 携带情况:
- 302 重定向不会携带
Origin
- 同域请求只有
post
请求才会携带Origin
- 跨域请求都会携带
Origin
,无论是get
请求还是post
请求
- 302 重定向不会携带
-
Referer: 表示当前客户端页面地址
- 格式: 协议+域名+端口号+路径+参数
- 特点:
Referer
可以隐藏,甚至可以修改 - 应用场景: 服务端一般使用Referer首部识别访问来源,可能会以此进行防盗链、统计分析、日志记录以及缓存优化等
- 携带情况:
- 来源页面协议为File或者Data URI(如页面从本地打开的) 不会携带
Referer
- 来源页面是Https,而目标URL是http 不会携带
Referer
- 浏览器地址栏直接输入网址访问,或者通过浏览器的书签直接访问 不会携带
Referer
- 使用JS的location.href跳转 不会携带
Referer
- 来源页面协议为File或者Data URI(如页面从本地打开的) 不会携带
十六、If-Match
16.1 认识
If-Match
只有请求内容与实体相匹配才有效。可选值为: “737060cd8c284d8af7ad3082f209582d”
16.2 语法
If-Match: “737060cd8c284d8af7ad3082f209582d”
十七、If-Modified-Since
17.1 认识
If-Modified-Since
如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码。可选值为: Sat, 29 Oct 2010 19:43:31 GMT
17.2 语法
If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT
十八、If-None-Match
18.1 认识
If-None-Match
如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变。可选值为: “737060cd8c284d8af7ad3082f209582d”
18.2 语法
If-None-Match: “737060cd8c284d8af7ad3082f209582d”
十九、If-Range
19.1 认识
If-Range
如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为Etag。可选值为: “737060cd8c284d8af7ad3082f209582d”
19.2 语法
If-Range: “737060cd8c284d8af7ad3082f209582d”
二十、If-Unmodified-Since
20.1 认识
If-Unmodified-Since
只在实体在指定时间之后未被修改才请求成功。可选值为: Sat, 29 Oct 2010 19:43:31 GMT
20.2 语法
If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT
二十一、Max-Forwards
21.1 认识
Max-Forwards
限制信息通过代理和网关传送的时间。可选值为: 10
21.2 语法
Max-Forwards: 10
二十二、Pragma
22.1 认识
Pragma
用来包含实现特定的指令。可选值为: no-cache
22.2 语法
Pragma: no-cache
二十三、Proxy-Authorization
23.1 认识
Proxy-Authorization
连接到代理的授权证书。可选值为: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
23.2 语法
Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
二十四、Range
24.1 认识
Range
只请求实体的一部分,指定范围。可选值为: bytes=500-999
24.2 语法
Range: bytes=500-999
二十五、Referer
25.1 认识
Referer
先前网页的地址,当前请求网页紧随其后,即来路。可选值为: http://www.zcmhi.com/archives/71.html
25.2 语法
Referer: http://www.zcmhi.com/archives/71.html
二十六、TE
26.1 认识
TE
客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息。可选值为: trailers
、deflate;q=0.5
26.2 语法
TE: trailers,deflate;q=0.5
二十七、Upgrade
27.1 认识
Upgrade
向服务器指定某种传输协议以便服务器进行转换(如果支持)。可选值为: HTTP/2.0
、SHTTP/1.3
、IRC/6.9
、RTA/x11
27.2 语法
Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
二十八、User-Agent
28.1 认识
User-Agent
的内容包含发出请求的用户信息。可选值为: Mozilla/5.0 (Linux; X11)
28.2 语法
User-Agent: Mozilla/5.0 (Linux; X11)
二十九、Via
29.1 认识
Via
通知中间网关或代理服务器地址,通信协议。可选值为: 1.0 fred
、1.1 nowhere.com (Apache/1.1
29.2 语法
Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
三十、Warning
30.1 认识
Warning
关于消息实体的警告信息。可选值为: 199 Miscellaneous warning
30.2 语法
Warn: 199 Miscellaneous warning
三十一、Referrer-Policy
31.1 认识
31.2 语法
31.3 策略
Referrer-Policy
策略
-
no-referrer
: 任何情况下都不发送Referrer
信息 -
no-referrer-when-downgrade
: 仅当发生协议降级时不发送Referrer
信息(如HTTPS
页面引入HTTP
资源,从HTTPS
页面跳到HTTP
等)时不发送Referrer
信息。这个规则是现在大部分浏览器默认所采用的 -
origin
: 发送只包含host
部分的Referrer
。启用这个规则,无论是否发生协议降级,无论是本站链接还是站外链接,都会发送Referrer
信息,但是只包含协议+host
部分(不包含具体的路径及参数等信息)。 -
origin-when-crossorigin
: 仅在发生跨域访问时发送只包含host
的Referrer
,同域下还是完整的。它与Origin Only
的区别是多判断了是否Cross-origin
。需要注意的是协议、域名和端口都一致,才会被浏览器认为是同域; -
unsafe-url
: 无论是否发生协议降级,无论是本站链接还是站外链接,统统都发送Referrer
信息。正如其名,这是最宽松而最不安全的策略;
应用 Referrer-Policy
策略
- 服务端对Referrer的控制
ctx.set("Referrer-Policy","no-referrer")
- Nginx对Referer的控制
add_header Referrer-Policy "origin-when-crossorigin";
add_header 'Referrer-Policy' 'origin';
add_header 'Referrer-Policy' 'unsafe-url';
- 页面中meta标签属性控制
<meta name="referrer" content="no-referrer">
<meta name="referrer" content="no-referrer-when-downgrade">
<meta name="referrer" content="origin">
- a标签单独设置指定Referer策略
<a href="#url" referrerpolicy="no-referrer|origin|unsafe-url">...</a>