Как решить "перенаправление было заблокировано политикой CORS: нет заголовка "Access-Control-Allow-Origin"?

Я работаю над приложением, используя vue js. В соответствии с моей настройкой мне нужно передать переменную в мой url-адрес при изменении настройки.

$.get('http://172.16.1.157:8002/firstcolumn/' + c1v + '/' + c1b, function (data) { 
  // some code...
});

но когда мое приложение попадает на url, он показывает следующий messsge.

не удалось загрузить http://172.16.1.157:8002/firstcolumn/2017-03-01/2017-10-26: перенаправление с 'http://172.16.1.157:8002/firstcolumn/2017-03-01/2017-10-26' to 'http://172.16.1.157:8002/firstcolumn/2017-03-01/2017-10-26/ 'был заблокирован политикой CORS: нет заголовка" Access-Control-Allow-Origin " на запрошенном ресурсе. Происхождение'http://localhost:8080 ' поэтому доступ запрещен.

6 ответов


в дополнение к тому, что awd упомянул о том, чтобы заставить человека, ответственного за сервер, реконфигурировать (непрактичное решение для локальной разработки) , я использую плагин change-origin chrome следующим образом:

https://chrome.google.com/webstore/detail/moesif-origin-cors-change/digfbfaphojjndkpccljibejjbppifbc

вы можете сделать ваш локальный dev-сервер (например: localhost:8080), чтобы казалось, что он исходит из 172.16.1.157:8002 или любого другого домена.


спасибо всем, я решил это расширение на chrome. https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi


спросите человека, поддерживающего сервер в http://172.16.1.157:8002/ чтобы добавить имя хоста к хостам Access-Control-Allow-Origin, сервер должен вернуть заголовок, подобный следующему с ответом -

Access-Control-Allow-Origin: yourhostname:port

Привет, если я правильно понял, Вы делаете XMLHttpRequest в другой домен, чем на Вашей странице. Таким образом, браузер блокирует его, поскольку он обычно разрешает запрос в том же происхождении по соображениям безопасности. Вам нужно сделать что-то другое, когда вы хотите сделать кросс-доменного запроса. Учебник о том, как достичь этого,использование CORS.

при использовании postman они не ограничены этой политикой. Цитата из Кросс-Происхождения XMLHttpRequest:

обычные веб-страницы могут использовать объект XMLHttpRequest для отправки и получения данных с удаленных серверов, но они ограничены той же политикой происхождения. Расширения не так ограничены. Расширение может общаться с удаленными серверами за пределами своего источника, если оно сначала запрашивает разрешения перекрестного происхождения.


вы делаете запрос на внешний домен 172.16.1.157:8002/ от вас локальный сервер разработки, поэтому он дает исключение cross origin. Либо вы должны разрешить headers Access-Control-Allow-Origin:* как в интерфейсе, так и в бэкэнде или альтернативно используйте это расширение переключатель заголовка cors-расширение chrome если вы хозяин backend и frontend на одном домене.


$.get('https://172.16.1.157:8002/firstcolumn/' + c1v + '/' + c1b, function (data) { 
  // some code...
});

просто поставьте "https".