这似乎不起作用:
$.ajaxSetup({
headers: {
Accept: 'application/vvv.website+json;version=1 ',
Authorization: 'Token token=\"FuHCLyY46\"'
}
});
我本来以为会的。如果我将这些过滤器专门添加到我的 AJAX 调用中,那么它们确实可以工作。我想在全球范围内为所有 AJAX 调用执行此操作。
这似乎不起作用:
$.ajaxSetup({
headers: {
Accept: 'application/vvv.website+json;version=1 ',
Authorization: 'Token token=\"FuHCLyY46\"'
}
});
我本来以为会的。如果我将这些过滤器专门添加到我的 AJAX 调用中,那么它们确实可以工作。我想在全球范围内为所有 AJAX 调用执行此操作。
我做了一些额外的测试,您发布的代码完美运行。如果您在设置参数时遇到问题,您可以随时调用 beforeSend 并自己修改 xml 请求。
$.ajaxSetup({
beforeSend: function (xhr)
{
xhr.setRequestHeader("Accept","application/vvv.website+json;version=1");
xhr.setRequestHeader("Authorization","Token token=\"FuHCLyY46\"");
}
});
也可以通过猴子修补 open 方法以与框架无关的方式执行此操作:
var o = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(){
var res = o.apply(this, arguments);
var err = new Error();
this.setRequestHeader('X-Ajax-Stack', JSON.stringify(err.stack));
return res;
}
在此示例中,我通过标头发送堆栈跟踪信息,这允许后端知道 Ajax 请求的来源,即使它来自不使用 jQuery 的第三方代码。
(注意:小心标题 变得太大)
beforeSend
答案与直接header
添加header
到 ajax 调用不同。所以为了让jQuery正确地做到这一点,我添加了这个:
headers: myGlobalHeaders
其中myGlobalHeaders
是一个全局变量。不幸的是,我必须在每一个 ajax 调用上都写下这额外的一行。糟糕的!也许我会编辑 jQuery 框架来处理这个..