Это известная проблема Fiori Launchpad.Существует файл abap.js
, который переопределяет метод send
по умолчанию XMLHttpRequest
.
Если вы добавляете внешний API в качестве нового места назначения в облачной платформе SAP (или используете веб-диспетчер в-premise environment), тогда больше не будет вызовов CORS и, следовательно, больше не будет проблем с CORS.
Если вы хотите чисто JavaScript-решение, вы можете восстановить исходную реализацию с помощью двух функций.Добавьте их в свой контроллер.
Позвоните по следующему номеру непосредственно перед доступом к внешнему API
_overrideRequestPrototype: function () {
if (!XMLHttpRequest._SAP_ENHANCED) {
return;
}
this.__send = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function (oBody) {
let oChannel = {};
this._checkEventSubscriptions();
try {
oChannel = this._channel;
this._saveParams(oBody);
this._send(oBody);
if (oChannel) {
oChannel.sent();
}
} catch (oError) {
if (oChannel) {
oChannel["catch"](oError);
} else {
throw oError;
}
}
};
}
После вызова восстановите код SAP с помощью следующей функции:
_restoreRequestPrototype: function () {
if (!XMLHttpRequest._SAP_ENHANCED) {
return;
}
XMLHttpRequest.prototype.send = this.__send;
}