В запрошенном ресурсе отсутствует заголовок "Access-Control-Allow-Origin". Поэтому происхождение не разрешено
Я проверяю, активен ли конкретный URL-адрес или нет, добавив функцию http get к кнопке в моем приложении ui5.
Для этого код выглядит так:
_onButtonPress: function () {
var xhr = new XMLHttpRequest();
xhr.open('GET', this.getView().byId("sap_Responsive_Page_0-content-sap_ui_layout_form_SimpleForm-1476966827717-content-sap_m_Input-1476966871600").getValue(), true);
xhr.send();
xhr.onreadystatechange = processRequest;
function processRequest(e) {
if (xhr.readyState == 4 && xhr.status == 200) {
var response = (xhr.responseText);
alert(response); }
}},
Для ввода URL мы используем только запросы https.
Но когда я ставлю значение для URL и проверяю кнопку, я получаю,
XMLHttpRequest не может загрузить https://my3/ ****6.sapbydesign.com/sap/byd/runtime/(entered url). В запрошенном ресурсе отсутствует заголовок " Access-Control-Allow-Origin ". Происхождение " https: // URL браузера приложения ", следовательно, не разрешен доступ.
Идея состоит в том, чтобы проверить статус URL и установить состояние статуса из статуса URL.
Как я могу предотвратить это? Бр Сурадж Н
2 ответа
Это защита браузера от класса атак, называемых подделками межсайтовых запросов.
Как объяснено в сообщении об ошибке, вы не можете заставить это работать, если связанный сайт (в этом случае https://my3/ ****6.sapbydesign.com/sap/byd/runtime/) не добавляет соответствующий Access-Control-Allow-Origin
Заголовок своего ответа.
Проблема возникает из-за того, что ваше приложение (запускающее get) размещено в домене A, а служба размещена в домене B. По соображениям безопасности браузеры не позволяют вам этого делать.
Один из способов исправить это - заставить сервер разрешать определенные глаголы Http с ваших доменов. Но если вы не контролируете серверную часть, вы не сможете этого сделать.
Другой способ - создать прокси-сервер на своем конце и настроить его так, чтобы он передавал все запросы исходному серверу, который вы намеревались выполнить, запросом get.
Затем в исходном приложении вы получаете доступ к прокси-серверу.
Вы можете сделать это непосредственно в Eclipse: http://help.sap.com/saphelp_nw74/helpdata/de/2d/3f5fb63a2f4090942375df80abc39f/content.htm
Или вы можете запустить прокси на узле: