オブジェクトのopen()
メソッドを変更したい。XMLHttpRequest
実際、トラフxhrを送信するすべてのURLを変更する必要があります。これどうやってするの?
たとえば、xhrオブジェクトが1つのリクエストを開いたときに、それを次のhttp://domain.com/
ように変更したいhttps://domain.com/
オブジェクトのopen()
メソッドを変更したい。XMLHttpRequest
実際、トラフxhrを送信するすべてのURLを変更する必要があります。これどうやってするの?
たとえば、xhrオブジェクトが1つのリクエストを開いたときに、それを次のhttp://domain.com/
ように変更したいhttps://domain.com/
ネイティブ 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);
}