禁止请求头

禁止的请求头是 HTTP 头名称-值对,不能在请求中通过编程方式设置或修改。有关禁止在响应中修改的头,请参阅禁止的响应头名称

禁止修改此类头的原因是用户代理对其拥有完全控制权。例如,Date 头是一个禁止的请求头,因此此代码无法设置消息的 Date 字段

js
fetch("https://httpbin.org/get", {
  headers: {
    Date: new Date().toUTCString(),
  },
});

Sec- 开头的名称保留用于创建新的头,这些头在赋予开发者控制头的 API(例如fetch())中是安全的。禁止的头是以下之一:

注意:User-Agent 头曾经是禁止的,但现在不再是。然而,Chrome 仍然悄悄地从 Fetch 请求中删除该头(参见Chromium bug 571722)。

注意:虽然Referer 头在规范中被列为禁止的头,但用户代理并不对其拥有完全控制权,并且该头可以通过编程方式修改。例如,在使用fetch()时,Referer 头可以通过referrer 选项进行编程修改。

另见