3.1.2 HTTP Headers
出于安全考虑,有些 headers 只能由用户代理控制(不能以编程的方式修改),包括以下两大类:
Forbidden response header name,禁止响应标头名称
Set-Cookie
,Set-Cookie2
Forbidden request header name,禁止请求标头名词
Accept-Charset
Accept-Encoding
Access-Control-Request-Headers
Access-Control-Request-Method
Connection
Content-Length
Cookie
,Cookie2
Date
DNT
Expect
Feature-Policy
Host
Keep-Alive
Origin
Referer
TE
Trailer
Transfer-Encoding
Upgrade
Via
以
proxy-
或sec-
开头的
不再被禁止User-Agent
CORS-safelisted request header
Accept
Accept-Language
Content-Language
Content-Type
当仅包含这些标头(以及满足下面列出的附加要求的值)时,请求不需要在 CORS 的上下文中发送 Preflight request(预检请求)。 我们可以使用 Access-Control-Allow-Headers
header 将更多 headers 列入安全列表,并在其中列出上述标头以规避以下附加限制: CORS-safelisted headers 还必须满足以下要求才能成为 CORS-safelisted request header:
对于
Accept-Language
和Content-Language
:值只能由0-9
,A-Z
,a-z
, 空格, 或*,-.;=
组成对于
Accept
和Content-Type
:不能包含 CORS-unsafe request header 字节:0x00-0x1F
(0x09 (HT)
除外),"():<>?@[\]{}
,0x7F (DEL)
对于
Content-Type
:MIME 类型可以是application/x-www-form-urlencoded
,multipart/form-data
或text/plain
对于任何标头:值的长度不能大于 128
CORS-safelisted response header,可以安全地暴露给客户端脚本,只有列入安全列表的响应标头可用于网页。默认情况下,安全列表包括以下响应标头:
Cache-Control
Content-Language
Content-Length(不是原始安全列表响应标头集的一部分)
Content-Type
Expires
Last-Modified
Pragma
更多:可以使用 response header
Access-Control-Expose-Headers
将其它标头添加到安全列表中,它允许服务器指示哪些 response headers 可用于在浏览器中运行的脚本,以响应跨域请求。
response header Access-Control-Allow-Origin
指示响应是否可以和来自给定源的请求代码共享。
Last updated