2016-04-21 6 views
14

Ошибка заключается в следующем:Как сделать HTTP-запросы с поддержкой CORS в Angular 2?

XMLHttpRequest не может загрузить http://some_url.herokuapp.com/api/some_api/. В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Происхождение 'http://localhost:3000' поэтому не допускается. Ответ был HTTP код статуса 503.

при вызове

возвращение this._http.post (requestUrl, JSON.stringify (requestBody), requestOptions)

я имел проблемы с CORS (при работе с Angular 1) в прошлом, и я помню, что как только CORS были активированы на стороне сервера, мне пришлось преобразовать http-запрос для разбора определенных HTTP-заголовков.

Я довольно смущен о том, как он должен работать, поэтому любое объяснение очень приветствуется.

+0

Это может быть server- боковая проблема. API отвечает 503, так что, возможно, это какой-то обработчик ошибок (например, в прокси-службе), который не предоставляет заголовки «Access-Control-Allow-Origin», как остальные ваши бэкэнды? – jkondratowicz

+0

получается, что это действительно проблема с бэкэнд. – dragonmnl

ответ

15

На самом деле, это не проблема Angular2, а проблема на стороне сервера. Запрошенный запрос OPTIONS должен вернуть заголовок Access-Control-Allow-Origin в свой ответ.

Отправка заголовка Origin в исходный запрос позволит поддержку CORS на стороне сервера. Этот заголовок автоматически добавляется браузером, когда он обнаруживает, что домен запроса не совпадает с доменом вызывающего.

Будьте осторожны при реализации запроса опциональных опций на серверной стороне с учетные данные не отправляются на этом уровне. Они отправляются только в целевой запрос. Кажется, это проблема, так как у вас есть ошибка 503. Вы пытаетесь проверить, если запрос OPTIONS проходит проверку подлинности, но это на самом деле не так ...

Смотрите эту статью для более подробной информации:

+0

У меня была такая же проблема в ionic3, и я написал коды веб-сервисов по php. мои ошибки были * .subscribe() * не является функцией или .map() не является функцией или что-то вроде этого. но я удаляю эти функции, потому что возвращаемое значение правильно загружено кодами моего клиента;) –

Смежные вопросы