向所有jQuery AJAX请求添加自定义http头
澄清点:在jQueryAjax调用中添加自定义头没有任何问题,我希望将自定义头自动添加到所有ajax调用中 如果您看一看(不是我的问题),您将看到一个非常好的示例,说明如果手动实现每个ajax调用,代码是如何工作的 我想覆盖所有jqueryajax调用的beforeSend。根据jQuery文档,我可以通过使用来实现这一点,但是有一条警告说,您可能不应该这样做,这可能会导致意外行为,等等。对于此类全局回调,建议使用.ajaxStart()。看起来不错,只是它没有公开XHR,所以我可以添加标题向所有jQuery AJAX请求添加自定义http头,jquery,ajax,authentication,http-headers,xmlhttprequest,Jquery,Ajax,Authentication,Http Headers,Xmlhttprequest,澄清点:在jQueryAjax调用中添加自定义头没有任何问题,我希望将自定义头自动添加到所有ajax调用中 如果您看一看(不是我的问题),您将看到一个非常好的示例,说明如果手动实现每个ajax调用,代码是如何工作的 我想覆盖所有jqueryajax调用的beforeSend。根据jQuery文档,我可以通过使用来实现这一点,但是有一条警告说,您可能不应该这样做,这可能会导致意外行为,等等。对于此类全局回调,建议使用.ajaxStart()。看起来不错,只是它没有公开XHR,所以我可以添加标题 我
我应该使用ajaxSetup在发送之前添加吗?有没有办法从ajaxStart访问XHR?其他选项?您可以使用ajax全局事件
演示:预过滤器是实现这一点的简单方法:
$.ajaxPrefilter(function( options ) {
if ( !options.beforeSend) {
options.beforeSend = function (xhr) {
xhr.setRequestHeader('CUSTOM-HEADER-KEY', 'CUSTOM-HEADER-VALUE');
}
}
});
这样,所有请求都将获得自定义头,除非特定请求覆盖beforeSend选项
但是请注意,使用ajaxSetup可以实现相同的目标。警告存在的唯一原因是,使用它将影响所有ajax请求(就像我的方法一样),如果特定请求不需要该选项集,可能会导致不需要的结果。我建议只使用ajaxSetup,这就是它的用途。您可以添加一个前置过滤器@KevinB-您可以将其作为答案发布吗?您不需要在发送前修改
功能。jqXHR对象作为$.ajaxPrefilter(options,originalooptions,jqXHR)
函数中参数的一部分公开。因此,您只需在prefilter函数jqXHR.setRequestHeader('CUSTOM-HEADER-KEY','CUSTOM-HEADER-VALUE')中编写代码即可代码>
$.ajaxPrefilter(function( options ) {
if ( !options.beforeSend) {
options.beforeSend = function (xhr) {
xhr.setRequestHeader('CUSTOM-HEADER-KEY', 'CUSTOM-HEADER-VALUE');
}
}
});