В запрошенном ресурсе отсутствует заголовок "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

Или вы можете запустить прокси на узле:

https://www.npmjs.com/package/gulp-connect-proxy

Другие вопросы по тегам