首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在JavaScript中设置请求头

在JavaScript中设置请求头
EN

Stack Overflow用户
提问于 2009-08-12 20:52:46
回答 2查看 260.1K关注 0票数 63

在使用XMLHttpRequest进行AJAX调用时,我似乎无法更改大多数来自JavaScript的请求头。请注意,当必须在Gecko浏览器中的request.open()之后调用request.setRequestHeader时(请参见http://ajaxpatterns.org/Talk:XMLHttpRequest_Call)。当我设置Referer时,它没有被设置(我查看了使用Firebug和篡改数据发送的请求头)。当我设置User-Agent时,它把AJAX调用搞得一团糟。但是,设置Accept和Content-Type确实有效。是否阻止我们在Firefox3中设置Referer和User-Agent?

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");
    }
  }
}
EN

回答 2

Stack Overflow用户

发布于 2013-12-12 05:16:34

@gnarf答案是正确的。想要添加更多信息。

Mozilla Bug参考:https://bugzilla.mozilla.org/show_bug.cgi?id=627942

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

Accept-Charset
Accept-Encoding
Access-Control-Request-Headers
Access-Control-Request-Method
Connection
Content-Length
Cookie
Cookie2
Date
DNT
Expect
Host
Keep-Alive
Origin
Referer
TE
Trailer
Transfer-Encoding
Upgrade
User-Agent
Via

来源:https://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#dom-xmlhttprequest-setrequestheader

票数 4
EN

Stack Overflow用户

发布于 2016-04-09 19:22:59

对于正在查找这篇文章的人:

似乎从Firefox43开始就允许设置User-Agent头了。有关禁用标头的当前列表,请参阅https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1268673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档