JavaScript可以设置哪些HTTP标头?

Jor*_*dan 13 javascript http xmlhttprequest http-headers

W3C是否指定XMLHttpRequest可以设置哪些HTTP头?如果是这样,他们是否出于安全原因发布了证明这些要求的文件?

是否由浏览器自行决定限制HTTP标头?如果是这样,是否有在线文档或文档集合列出了不同XHR实现的怪癖,或者是否有必要在每个实现的文档中找到该信息?

Mar*_*iry 6

W3C有关于标题允许的规范setRequestHeader

如果header是以下标头之一的不区分大小写的匹配项,请终止这些步骤:

  • 接收字符
  • 接受编码
  • 访问控制请求报头
  • 访问控制请求法
  • 连接
  • 内容长度
  • 曲奇饼
  • COOKIE2
  • 内容传输编码
  • 日期
  • 期望
  • 主办
  • 活着
  • 起源
  • 引荐
  • TE
  • 预告片
  • 传输编码
  • 升级
  • 用户代理
  • 通过

...或者如果标头的开头是Proxy-或Sec-的不区分大小写匹配(包括标头只是代理或秒).

上述标题由用户代理控制,以便控制传输的这些方面.这在一定程度上保证了数据完整性.不允许将以Sec-开头的头名称设置为允许新的头文件被保证不会来自XMLHttpRequest.

你也可以考虑:

如果header不在author-request-headers列表中,则追加标题及其与列表的关联值并终止这些步骤.

关于浏览器的实现,我发现了这个不错的测试:https://dvcs.w3.org/hg/webapps/diff/5814514eeba4/tests/XMLHttpRequest/setrequestheader-header-forbidden.htm,你无法用来查找当前的差异.

例如,IE对头文件的安全性有这样的定义:

IE:有关标准标题的一般列表,请参阅RFC2616,第14节:标题字段定义.服务器最终负责尊重请求的标头.到目前为止,最常见的请求标头是Content-Type,这是某些XML Web服务所需要的.