如何用 JavaScript 中的 XMLHttpRequest 替换所有请求中的 header 令牌?

How to replace header tokens in all requests with XMLHttpRequest in JavaScript?

以下代码片段更新每个请求的 header 信息。

   var open: any = XMLHttpRequest.prototype.open;

   XMLHttpRequest.prototype.open = function () {
      open.apply(this, [].slice.call(arguments));
      this.setRequestHeader('Authorization', `Bearer ${token}`);
   };

因此,它将 header 令牌与先前的请求令牌合并。

如何防止令牌在 header 中合并?事实上,新令牌将被覆盖。

您可以先尝试通过

删除header
this.setRequestHeader("Authorization");
// or
this.setRequestHeader("Authorization", "");

然后尝试 re-setting header。

this.setRequestHeader('Authorization', `Bearer ${token}`);

根据现有文档,重写拦截器中的header是错误的场景 这意味着脚本不应到达需要重写 header 的地步 我建议检查大部分项目以避免发送不需要的 headers

不过还是有办法的(non-standard) 以某种方式覆盖了 header 但是可能会出现其他问题

var open = XMLHttpRequest.prototype.open;
var send = XMLHttpRequest.prototype.send;
var method = "";
var url ="";
XMLHttpRequest.prototype.open = function (_method,_url) {

method = _method;
url = _url;
open.apply(this, [].slice.call(arguments)); 
};

XMLHttpRequest.prototype.send = function (data) {
var xml2 = new XMLHttpRequest();
xml2.open(method, url,true); 
xml2.setRequestHeader('Authorization', "aaa");
send.call(xml2, data);
};