0

オブジェクトのopen()メソッドを変更したい。XMLHttpRequest実際、トラフxhrを送信するすべてのURLを変更する必要があります。これどうやってするの?

たとえば、xhrオブジェクトが1つのリクエストを開いたときに、それを次のhttp://domain.com/ように変更したいhttps://domain.com/

4

1 に答える 1

2

ネイティブ DOM オブジェクトの任意のメソッドに割り込むことができますが、お勧めしません。これをしないでください。

XMLXttpRequestとにかく、のopenメソッドを操作する方法を知りたい場合は、次のようにします。

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);
}

URLを変更するという非常にユースケースの場合protocol、これを行うことができます。

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 に答える