Чтобы перехватить нативные вызовы ajax, я нашел следующий фрагмент, который отлично работает
(function(XHR) {
"use strict";
var open = XHR.prototype.open;
var send = XHR.prototype.send;
XHR.prototype.open = function(method, url, async, user, pass) {
this._url = url;
open.call(this, method, url, async, user, pass);
};
XHR.prototype.send = function(data) {
var self = this;
var oldOnReadyStateChange;
var url = this._url;
console.log(url);
function onReadyStateChange() {
if(self.readyState == 4 /* complete */) {
/* This is where you can put code that you want to execute post-complete*/
/* URL is kept in this._url */
}
if(oldOnReadyStateChange) {
oldOnReadyStateChange();
}
}
/* Set xhr.noIntercept to true to disable the interceptor for a particular call */
if(!this.noIntercept) {
if(this.addEventListener) {
this.addEventListener("readystatechange", onReadyStateChange, false);
} else {
oldOnReadyStateChange = this.onreadystatechange;
this.onreadystatechange = onReadyStateChange;
}
}
send.call(this, data);
}
})(XMLHttpRequest);
Но я хочу изменить целевой хост, поэтому вместо того, чтобы запускать эти запросы ajax на текущем веб-сайте, я хочу вместо этого перенаправить их на другой сайт.
Я попытался this.setRequestHeader('Host', 'example.com');
, но я получил сообщение об ошибке в консоли, сообщающее, что я пытаюсь установить запрещенный заголовок.
На самом деле я мог бы сделать еще один запрос ajax, но мне было бы гораздо удобнее просто переключать хосты.
Спасибо