问题描述
我们正在运行 Kibana 4.3 服务。我不想修改源代码。
目标是添加一个加密令牌,将其称为 A-Token 到浏览器向 Kibana 发出的每个 Ajax 请求。
背景
Kibana 服务由 nginx 代理。
当用户向 Kibana 服务发出 Ajax 请求时,该请求会被 nginx http_auth_request 代理拦截并传递给验证令牌的“auth”服务。如果它丢失或无效,则“auth”向 http_auth_request 返回 201 并执行对 Kibana 服务的请求,否则返回 404 并且请求被拒绝,因为它是在没有有效令牌的情况下发出的。
(该方案基于加密令牌模式,该模式通常用作无会话情况下的跨站点脚本的对策,例如手头的情况)。
我阅读了 W3 XMLHttpRequest 文档,似乎 setRequestHeader 需要在打开之后和发送之前运行 - 这意味着该方案在一般情况下是不可能的,或者非常依赖于 JS 平台。
使用 Jquery .ajaxSetup 的测试(如本示例)确认无法独立设置标头:
$.ajaxSetup({
beforeSend: function(xhr) {
xhr.setRequestHeader(A-Token", 1314159);
}
});
Run Code Online (Sandbox Code Playgroud)
寻找不需要分叉 Kibana 的可能解决方案。
丹尼