这是我的问题: 使用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);
知道为什么吗?
答案 0 :(得分:1)
W3C XHR spec明确禁止在JavaScript中设置Via
标头:
如果header是以下标题之一的不区分大小写的匹配项,请终止这些步骤:
Accept-Charset
Accept-Encoding
- ...
Upgrade
User-Agent
- 的
Via
强>注意:上述标题由用户代理控制,以便控制传输的这些方面。这在一定程度上保证了数据的完整性。