向所有jQuery AJAX请求添加自定义http标头

前端之家收集整理的这篇文章主要介绍了向所有jQuery AJAX请求添加自定义http标头前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
澄清点:在我的jQuery ajax调用添加自定义标题没有任何问题,我想自动将我的自定义标头添加到所有的ajax调用中.

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

我想覆盖beforeSend所有jQuery ajax调用.根据jQuery文档,我可以使用jQuery.ajaxSetup()这样做,但是有一个警告说你可能不应该,可能会导致意想不到的行为,所有的东西.对于这种全局回调,他们建议使用.ajaxStart(). .ajaxStart()看起来不错,除了它不暴露XHR,所以我可以添加标题.

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

解决方法

预过滤器将是实现此目的的简单方法
$.ajaxPrefilter(function( options ) {
    if ( !options.beforeSend) {
        options.beforeSend = function (xhr) { 
            xhr.setRequestHeader('CUSTOM-HEADER-KEY','CUSTOM-HEADER-VALUE');
        }
    }
});

这样,所有请求都将获得自定义标头,除非特定的请求覆盖了beforeSend选项.

请注意,您可以使用ajaxSetup完成相同的目标.唯一的原因是警告是因为使用它会影响所有的ajax请求(就像我的方法将),如果特定请求不需要该选项集可能会导致不必要的结果.我建议只使用ajaxSetup,这就是它在那里.

猜你在找的jQuery相关文章