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

 吴姿云68153 发布于 2023-02-13 10:34

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

如果你看一下jquery $ .ajax自定义http头问题(不是我的问题),你会看到一个非常好的例子,说明如果手动为每个ajax调用实现代码的工作方式.

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

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

2 个回答
  • 预过滤器将是实现此目的的简单方法:

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

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

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

    2023-02-13 10:36 回答
  • 你可以使用ajax全局事件ajaxSend()

    $( document ).ajaxSend(function( event, jqxhr, settings ) {
        jqxhr.setRequestHeader(name, value)
    });
    

    演示:小提琴

    2023-02-13 10:36 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有