我想改变对象的open()
方法XMLHttpRequest
。实际上,我需要更改将通过 xhr 发送的每个 url。我怎样才能做到这一点?
例如,当 xhr 对象打开一个请求时,http://domain.com/
我想将其更改为https://domain.com/
我想改变对象的open()
方法XMLHttpRequest
。实际上,我需要更改将通过 xhr 发送的每个 url。我怎样才能做到这一点?
例如,当 xhr 对象打开一个请求时,http://domain.com/
我想将其更改为https://domain.com/
您可以在本地 DOM 对象上插入任何方法,但不推荐这样做。不要这样做。
无论如何,如果您想知道如何操作XMLXttpRequest
'sopen
方法,您可以这样做:
var open = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(){
// do stuff you want
// for example console.log:
console.log('test');
// then let open method happen
open.apply(this, arguments);
}
对于您正在更改protocol
URL 的用例,您可以这样做:
var open = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(){
var link = document.createElement('a'); // make an anchar element
link.href = arguments[1]; // make it's href equal to second argument which is URL
link.protocol = 'https:'; // force https to the link
arguments[1] = link.href; // write back URL form link that is now start with 'https'
// then let open method happen
open.apply(this, arguments);
}