当前位置: 首页 > 面试题库 >

将自定义http标头添加到所有jQuery AJAX请求中

曾光远
2023-03-14
问题内容

澄清点:将自定义标头添加到我的jQuery ajax调用中没有任何问题,我想将我的自定义标头自动添加到所有ajax调用中。

如果您看看jquery $.ajax自定义http标头问题(不是我的问题),您将看到一个很好的示例,说明如何为每个ajax调用手动实现代码。

我想为所有jQuery
ajax调用覆盖beforeSend。根据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,这毕竟是它的目的。



 类似资料:
  • 问题内容: 我想知道是否可以通过添加自定义信息来配置所有$ http请求标头。像config这样的东西: 但是对于所有$ http呼叫,我将使用不同的服务。我敢肯定有一个解决方案:D。谢谢 问题答案: 您可以创建一个拦截器来扩展标题:

  • 问题内容: 我需要向来自WebView的每个请求添加自定义标头。我知道有用于的参数,但这些参数仅应用于初始请求。所有后续请求均不包含标头。我已经看过所有的替代,但是没有什么允许将标头添加到资源请求- 。任何帮助都会很棒。 问题答案: 尝试 要将标头添加到资源加载请求中,请定制WebViewClient并重写:

  • 我正在尝试使用JQuery在Ajax中向请求添加头。 以下是代码:- 然后我使用了要求(要求是chrome火狐插件,我们可以手动添加一个标题到请求)。 手动添加标题后:- 在这两个pics请求头中,“ACCESS-CONTROL-request-HEADERS”中都有x-auth-token,但第二个pic中有“x-auth-token”头和头值,而第一个pic中没有。 所以我的问题是如何使用JQ

  • 问题内容: 我已经开发了一个Restfull应用程序,我想添加另一个Web应用程序来使用其服务,因此我进行了以下Ajax调用: 我得到这个例外: 对象{readyState:0,状态:0,statusText:“ SyntaxError:无法执行’setRequestHeader’…-Origin: ‘不是有效的HTTP标头字段名称。”}错误DOMException:无法在’XMLHttpRequ

  • 我正在编写一个mdp文件,并且我正在寻找一种方法来指定(或修改)客户端为特定演示文稿所做的所有请求的HTTP标头。我想在超文本传输协议请求中添加一个授权字段。我希望在不编辑客户端sw的情况下这样做。 我已经阅读了ISO/IEC 23009-1,但我没有发现任何关于它的信息。有人知道怎么做吗?

  • 我在openshift容器平台上部署了一个容器化应用程序/服务,其中包含istio服务网格。在istio虚拟服务yaml中,我想验证http请求是否有头(对于ex:version)和值v1。我在虚拟服务yaml中添加了下面的配置,用于验证头文件。但我正在寻找可用的选项,使用loadbalancer/ingress/openshif route等将此头插入HTTP请求中,因为我的istio ingr