JavaScript可以设置哪些HTTP标头?

时间:2012-08-09 02:56:48

标签: javascript http http-headers xmlhttprequest

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

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

1 个答案:

答案 0 :(得分:6)

W3C对setRequestHeader

允许的标头有this spec
  

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

     
      
  • Accept-Charset
  •   
  • 接受编码
  •   
  • 访问控制请求报头
  •   
  • 访问控制请求方法
  •   
  • 连接
  •   
  • 内容长度
  •   
  • 曲奇
  •   
  • Cookie2
  •   
  • Content-Transfer-Encoding
  •   
  • 日期
  •   
  • 期望
  •   
  • 主持人
  •   
  • 保持活动
  •   
  • 来源
  •   
  • Referer的
  •   
  • TE
  •   
  • 拖车
  •   
  • 转移编码
  •   
  • 升级
  •   
  • 用户代理
  •   
  •   
     

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

     

上述标题由用户代理控制,以便让它控制   运输的那些方面。 这可以保证某些人的数据完整性   范围。不允许将以Sec-开头的标题名称设置为   允许新的标题被铸造,保证不会来自   XMLHttpRequest的。

你也可以考虑:

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

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

例如, IE 在标头上定义了安全性:

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