我可以为所有 AJAX 请求设置全局标头吗?
Can I set a global header for all AJAX requests?
这似乎不起作用:
$.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
直接添加到 ajax 调用中并不建立相同的header
。因此,为了使jQuery正确地执行此操作,我添加了以下内容:
headers: myGlobalHeaders
其中myGlobalHeaders
是全局变量。不幸的是,我必须在每次 ajax 调用时编写此额外行。可怕!也许我会编辑jQuery框架来处理这个问题。
相关文章:
- 在javascript函数中设置全局变量
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 如何构建'瞬间'在非全局区域设置中工作的函数
- 在javascript函数的循环中设置全局布尔变量的最佳语法
- 没有通过ajax调用设置Javascript全局变量
- 如何从jQuery设置控制器或全局变量的属性
- 使用eval()设置全局变量
- 如何在另一个函数调用中设置全局数组值
- 全局设置angular.js url根
- 从ngInit在AngularJS中全局设置自定义HTTP头
- 创建全局设置超时变量
- 如何使用 JSLint 全局设置“使用严格”
- bootstrap日期选择器全局设置语言
- Angular过滤器|全局设置格式化(最佳实践)
- 如何全局设置角矩时区
- JavaScript闭包使用全局设置对象或将其传递给每个函数
- 如何为端点做全局设置
- PHP全局设置URL并在每个页面中调用它
- 全局设置ajax请求的javascript变量
- asp.net mvc-在JavaScript中全局设置url