澄清点:将自定义 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/