1

我的网站有一些页面使用 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 原型上的东西来做到这一点吗?

4

1 回答 1

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

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

于 2013-04-16T16:23:14.580 回答