javascript - 在 JavaScript 中设置请求 header

标签 javascript ajax

在使用 XMLHttpRequest 进行 AJAX 调用时,我似乎无法更改 JavaScript 中的大多数请求 header 。请注意,在 Gecko 浏览器中,必须在 request.open() 之后调用 request.setRequestHeader(请参阅 http://ajaxpatterns.org/Talk:XMLHttpRequest_Call )。当我设置引用者时,它没有被设置(我查看了使用 Firebug 和 Tamper Data 发送的请求 header )。当我设置User-Agent时,它完全搞乱了 AJAX 调用。不过,设置 Accept 和 Content-Type 确实有效。我们是否被禁止在 Firefox 3 中设置RefererUser-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");
    }
  }
}

最佳答案

W3C Spec on setrequestheader .

要点:

If the request header had already been set, then the new value MUST be concatenated to the existing value using a U+002C COMMA followed by a U+0020 SPACE for separation.

UAs MAY give the User-Agent header an initial value, but MUST allow authors to append values to it.

但是 - 在 jQuery 中搜索 XHR 框架后,它们不允许您更改 User-Agent 或 Referer header 。最接近的事情:

// Set header so the called script knows that it's an XMLHttpRequest
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");

我倾向于这样的观点:您想要做的是被 FF 中的安全策略拒绝 - 如果您想传递一些自定义 Referer 类型 header ,您始终可以这样做:

xhr.setRequestHeader('X-Alt-Referer', 'http://www.google.com');

关于javascript - 在 JavaScript 中设置请求 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16827443/

相关文章:

javascript - jQuery 隐藏功能不适用于 AJAX 生成的 div?

javascript - 组件中的 store.getState 或 mapStateToProps

javascript - nvd3 离散条形图值重叠

javascript - Jquery 检索对象值

jquery - 通过 jquery .ajax 将发布数据提交到另一个域

javascript - jQuery XMLHttpRequest 调用外部 PHP 表单未提交

javascript - 通过 d3 更新传单上的 json

Javascript 帮助使用 createElement() 和 appendChild()

javascript - AJAX 状态代码 < 400 是否成功?

asp.net - 将 DataPager 控件与 AJAX 和 SEO 结合使用