所有ajax调用中的xhr.setrequestheader?

时间:2013-03-27 16:31:33

标签: jquery ajax dojo xmlhttprequest

我的网站有一些页面使用jquery和一些dojo(我们实际上转向jquery)。我需要在所有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原型上做一些改变呢?

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

$("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');
          }
});

希望这对你有所帮助。 问候。