在使用XMLHttpRequest进行AJAX调用时,似乎无法从JavaScript更改大多数请求标头。请注意,request.setRequestHeader必须request.open()在Gecko浏览器中调用when。设置_Referer时_ ,它没有设置(我查看了使用Firebug和Tamper Data发送的请求标头)。当我设置User-Agent时,它完全搞砸了AJAX调用。但是,设置接受和_内容类型_确实可以。我们是否无法在Firefox 3中设置 Referer 和 User- Agent ?
request.setRequestHeader
request.open()
var request = new XMLHttpRequest(); var path="http://www.yahoo.com"; request.onreadystatechange=state_change; request.open("GET", path, true); request.setRequestHeader("Referer", "http://www.google.com"); //request.setRequestHeader("User-Agent", "Mozilla/5.0"); request.setRequestHeader("Accept","text/plain"); request.setRequestHeader("Content-Type","text/plain"); request.send(null); function state_change() { if (request.readyState==4) {// 4 = "loaded" if (request.status==200) {// 200 = OK // ...our code here... alert('ok'); } else { alert("Problem retrieving XML data"); } } }
简要要点:
如果已经设置了请求头,则必须使用U + 002C COMMA,然后使用U + 0020 SPACE将新值连接到现有值,以进行分离。 UA可以给User-Agent头一个初始值,但是必须允许作者在其后附加值。
如果已经设置了请求头,则必须使用U + 002C COMMA,然后使用U + 0020 SPACE将新值连接到现有值,以进行分离。
UA可以给User-Agent头一个初始值,但是必须允许作者在其后附加值。
但是-在jQuery中搜索XHR框架后,它们不允许您更改User-Agent或Referer标头。最接近的东西:
// Set header so the called script knows that it's an XMLHttpRequest xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
我倾向于FF中的安全策略拒绝您要执行的操作-如果您想传递一些自定义Referer类型标头,则可以始终执行以下操作:
Referer
xhr.setRequestHeader('X-Alt-Referer', 'http://www.google.com');