我已经阅读了我能找到的所有其他相关答案,但没有一个有效。基本上,我想做这个来源: https://github.com/gildas-lormeau/zip.js/blob/master/WebContent/zip-ext.js
在第93行向the XMLHttpRequest
添加一些自定义标头。由于HTTPRangeReader
包含在匿名函数中,我无法直接对它进行monkeypatch,而且似乎唯一的选择是monkeypatch XMLHttpRequest
构造函数。我只需要调用默认构造函数,然后在返回新对象之前调用setRequestHeader()
一次或多次。
答案 0 :(得分:0)
使用别名克隆原件,然后在方法覆盖中引用它:
function handler()
{
console.log(JSON.stringify(arguments));
}
/* Avoid stack overflow */
if (XMLHttpRequest.prototype.mySetRequestHeader === undefined)
{
XMLHttpRequest.prototype.mySetRequestHeader = XMLHttpRequest.prototype.setRequestHeader;
}
/* Override prototype method */
XMLHttpRequest.prototype.setRequestHeader = function baz(foo, bar)
{
XMLHttpRequest.prototype.mySetRequestHeader.call(this, 'foo', 'bar');
XMLHttpRequest.prototype.mySetRequestHeader.call(this, 'bar', 'baz');
}
/* Test the override */
with (new XMLHttpRequest)
{
open('GET', location.href);
setRequestHeader("referer","http://www.example.com");
send("");
onreadystatechange = handler;
}

<强>参考强>