Чего я хочу достичь?
Я хочу перехватить XMLHttpRequest и изменить ответ для некоторых конкретных запросов. (Например, расшифровать контент и назначить его обратному ответу)
Что я уже сделал?
Ниже код перехватывает запрос и модифицирует ответ. Работает во всех браузерах (Chrome, Firefox, Opera, Edge), кроме IE 11.
const dummySend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function () {
const _onreadystatechange = this.onreadystatechange;
this.onreadystatechange = function () {
if (this.readyState === 4) {
if (this.status === 200 || this.status === 1223) {
// as response is read-only and configurable, make it writable
Object.defineProperty(this, 'response', {writable: true});
this.response = modifyResponse(this.response);
}
}
if (_onreadystatechange) {
_onreadystatechange.apply(this, arguments);
}
}
dummySend.apply(__self, arguments);
}
В чем проблема?
Все это не работает только в IE 11. Выдается сообщение об ошибке «Ошибка типа: в строгом режиме не допускается присвоение свойству только для чтения».
Может кто-нибудь, пожалуйста, помогите мне с этим?