此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
禁止修改的请求标头
禁止修改的请求标头指的是不能在代码中通过编程的方式进行修改的HTTP 标头,具体地,这是 HTTP请求标头名称(和禁止修改的响应标头形成对比)。
因为用户代理保留对此类标头的完全控制,所以它们被禁止修改。例如,Date 标头是禁止修改的标头,因此代码无法设置消息的Date 字段:
js
fetch("https://httpbin.org/get", { headers: { Date: new Date().toUTCString(), },});保留以Sec- 开头的名称,以用于创建新的,不会受到授予开发者控制标头权限的 API(如fetch())的影响的标头。禁止修改的标头包括以Proxy- 和Sec- 开头的标头,以及下面列出的标头:
Accept-EncodingAccess-Control-Request-HeadersAccess-Control-Request-MethodConnectionContent-LengthCookieDateDNTExpectPermissions-PolicyHostKeep-AliveOriginProxy-标头Sec-标头RefererTETrailerTransfer-EncodingUpgradeVia
备注:根据规范中的禁止修改的标头列表(Firefox 43 中实现了它),User-Agent 标头不再被禁止,现在可以设置在 Fetch 的Headers 对象中,或者通过XMLHttpRequest 的setRequestHeader() 方法设置。但是,Chrome 会静默地从 Fetch 请求中丢弃这个标头(请参阅Chromium bug 571722)。
备注:虽然规范中将Referer 标头列为禁止修改的标头,但是用户代理并没有完全对其进行控制,因此可以通过编程的方式修改此标头。例如,当使用fetch() 时,可以通过referrer 选项对Referer 标头进行编程修改。
In this article
参见
- 相关术语: