Jquery 是否在所有ajax调用中使用xhr.setrequestheader?
我的网站上有一些使用jquery的页面和一些我们正在迁移到jquery的dojo。我需要在所有ajax请求上设置一个公共自定义头,而不管它使用的是jquery还是dojo。我可以做一些事情吗Jquery 是否在所有ajax调用中使用xhr.setrequestheader?,jquery,ajax,dojo,xmlhttprequest,Jquery,Ajax,Dojo,Xmlhttprequest,我的网站上有一些使用jquery的页面和一些我们正在迁移到jquery的dojo。我需要在所有ajax请求上设置一个公共自定义头,而不管它使用的是jquery还是dojo。我可以做一些事情吗 $.ajaxSetup({ headers: { 'X-app':'ios' } }); dojo._xhr_orig = dojo.xhr; dojo.xhr = function(/*String*/ method, /*dojo.__XhrArgs*/ args
$.ajaxSetup({
headers: {
'X-app':'ios'
}
});
dojo._xhr_orig = dojo.xhr;
dojo.xhr = function(/*String*/ method, /*dojo.__XhrArgs*/ args, /*Boolean?*/ hasBody){
args = args || {};
args.headers = args.headers || {};
args.headers['X-app'] = 'ios';
return dojo._xhr_orig.apply(this, arguments);
}
但我需要在整个网站上这样做。是否可以在XMLHTTPrequest原型上更改某些内容以实现此目的?您可以尝试以下方法:
$("body").bind("ajaxSend", function(elm, xhr, s){
if (s.type == "POST") {
xhr.setRequestHeader('X-app', 'ios');
}
});
顺便说一句,请小心使用大写字母来设置请求头,我对IE6、IE7和IE8设置不正确有一些问题
编辑:
这比不必担心不区分大小写更好:
$.ajaxSetup({
beforeSend: function (jqXHR, settings) {
jqXHR.setRequestHeader('X-app', 'ios');
}
});
希望这对你有帮助。
注意。我认为只编写一个自定义xhr/request函数比修补XMLHttpRequest更容易。然后,您可以使用任何JS框架来实际构造带有特殊头或其他项的请求。