Jquery 是否在所有ajax调用中使用xhr.setrequestheader?

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

我的网站上有一些使用jquery的页面和一些我们正在迁移到jquery的dojo。我需要在所有ajax请求上设置一个公共自定义头,而不管它使用的是jquery还是dojo。我可以做一些事情吗

$.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框架来实际构造带有特殊头或其他项的请求。