jquery - 将自定义 http header 添加到所有 jQuery AJAX 请求

标签 jquery ajax authentication http-headers xmlhttprequest

澄清点:将自定义 header 添加到 jQuery ajax 调用中没有任何问题,我希望将自定义 header 自动添加到所有 ajax 调用中。

如果你看一下 jquery $.ajax custom http headers issue (不是我的问题),您将看到一个很好的示例,说明如果为每个 ajax 调用手动实现代码如何工作。

我想覆盖所有 jQuery ajax 调用的 beforeSend 。根据 jQuery 文档,我可以使用 jQuery.ajaxSetup() 来做到这一点,但有一个警告说你可能不应该这样做,可能会导致意外行为,诸如此类的事情。对于这种类型的全局回调,他们建议使用 .ajaxStart()。 .ajaxStart()看起来很棒,但它不公开 XHR,因此我可以添加 header 。

我应该使用 ajaxSetup 添加 beforeSend 吗?有没有办法从 ajaxStart 访问 XHR?其他选择?

最佳答案

预过滤器是实现此目的的一种简单方法:

$.ajaxPrefilter(function( options ) {
    if ( !options.beforeSend) {
        options.beforeSend = function (xhr) { 
            xhr.setRequestHeader('CUSTOM-HEADER-KEY', 'CUSTOM-HEADER-VALUE');
        }
    }
});

这样所有请求都将获得自定义 header ,除非特定请求覆盖 ​​beforeSend 选项。

但请注意,您可以使用 ajaxSetup 实现相同的目标。出现警告的唯一原因是因为使用它会影响所有 ajax 请求(就像我的方法一样),如果特定请求不需要设置该选项,则可能会导致不需要的结果。我建议只使用 ajaxSetup,毕竟这就是它的用途。

关于jquery - 将自定义 http header 添加到所有 jQuery AJAX 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20356374/

相关文章:

javascript - 如何让盒子自动向下移动?

jquery - 无法让 Cycle2 轮播与文本叠加一起使用

javascript - Ajax 调用会增加网站加载时间

mysql - 即使 SQL 查询找到行,Cakephp Auth 登录也会返回 false

Android检查用户之前登录,否则开始登录 Activity

javascript - jQuery 导航幻灯片

javascript - 关于io.sockets.manager和Socket.io的join函数的各种问题

JavaScript 代码在 windows7 中无法 $get 控件,但在 xp 中可以

javascript - 如何在ajax post中接收ajax回调

laravel - 调用未定义的方法Illuminate\Auth\GenericUser::save()