首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为所有XMLHTTPRequests设置默认标头

如何为所有XMLHTTPRequests设置默认标头
EN

Stack Overflow用户
提问于 2016-06-22 09:22:12
回答 1查看 5.9K关注 0票数 4

问题描述

我们正在运营Kibana 4.3服务。我不想修改源代码。

目标是在浏览器向Kibana发出的每个Ajax请求中添加一个加密令牌,称之为A令牌。

背景

Kibana服务由nginx代理。

当用户向Kibana服务发出Ajax请求时,该请求将被nginx http_auth_request代理截获并传递给验证令牌的"auth“服务。如果它丢失或无效,那么"auth“将201返回到http_auth_request,并且执行对Kibana服务的请求,否则它返回404,请求被拒绝,因为它是在没有有效令牌的情况下发出的。

(此方案基于加密的令牌模式,通常用作在没有会话的情况下进行跨站点脚本编写的对策,例如当前的情况)。

我阅读了W3 XMLHttpRequest文档,似乎setRequestHeader需要在打开之后和发送之前运行--这意味着这种方案在一般情况下是不可能的,或者是依赖于JS平台的。

像本例一样,使用Jquery .ajaxSetup进行的测试确认了头不能独立设置:

代码语言:javascript
复制
$.ajaxSetup({
    beforeSend: function(xhr) {
                xhr.setRequestHeader(A-Token", 1314159);
                  }
});

寻找可能的解决方案,将不需要分叉基巴纳。

丹尼

EN

回答 1

Stack Overflow用户

发布于 2017-05-09 16:38:01

我也在寻找这个问题的解决方案,但什么也找不到,然后我想出了下一个解决方案:

代码语言:javascript
复制
        XMLHttpRequest.prototype.origOpen = XMLHttpRequest.prototype.open;
        XMLHttpRequest.prototype.open   = function () {
            this.origOpen.apply(this, arguments);
            this.setRequestHeader('X-TOKEN', 'the token');
        };

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37963758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档