0

我想改变对象的open()方法XMLHttpRequest。实际上,我需要更改将通过 xhr 发送的每个 url。我怎样才能做到这一点?

例如,当 xhr 对象打开一个请求时,http://domain.com/我想将其更改为https://domain.com/

4

1 回答 1

2

您可以在本地 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);
}

对于您正在更改protocolURL 的用例,您可以这样做:

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);
}
于 2013-03-08T21:35:29.853 回答