XMLHttpRequest不发送' Via'

时间:2014-04-29 02:16:36

标签: javascript ajax xmlhttprequest

这是我的问题: 使用XMLHttpRequest执行AJAX调用时 它不会在请求中添加“Via”标题。

var xhr = new XMLHttpRequest();
xhr.open("GET", "http://www.poodle.com/", true);
...
xhr.setRequestHeader("Via", "Hello World");
...
xhr.send(null);

以下是映射信息:

(Request-Line)  GET / HTTP/1.1
Host    poodle.com:80
User-Agent  Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:28.0) Gecko/20100101 Firefox/28.0
Accept  text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8
Accept-Language null
Accept-Encoding gzip, deflate
Content-Type    application/json
Referer http://www.poodle.com/
Cookie  JSESSIONID=AB35C81E78FCE769187A8FD4611C3DD7
Connection  keep-alive

但是当我使用它时,它可以工作,但我不能在真正的网页(只有Firefox Addon)中使用它。

var xhr = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Components.interfaces.nsIXMLHttpRequest);

知道为什么吗?

1 个答案:

答案 0 :(得分:1)

W3C XHR spec明确禁止在JavaScript中设置Via标头:

  

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

     
      
  • Accept-Charset
  •   
  • Accept-Encoding
  •   
  • ...
  •   
  • Upgrade
  •   
  • User-Agent
  •   
  • Via
  •   
     

注意:上述标题由用户代理控制,以便控制传输的这些方面。这在一定程度上保证了数据的完整性。