@Scorpiored88

Почему при post запросе ругается браузер?

Всем доброго.
Пишу небольшое приложения на Angular и Node.
Интересную штуку заметил, при отправки POST запросов на мой node сервер, браузер выдает ошибку :

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'localhost:8100' is therefore not allowed access.

Хотя хедеры я выставил правильно:

res.header('Content-Type', 'application/text');
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'POST,GET');
res.header('Access-Control-Allow-Headers', 'origin, content-type, accept');


Но если посылать GET запрос то все ок, ни каких ошибок.
Подскажите, как сделать чтобы и POST запросы проходили ?
  • Вопрос задан
  • 1141 просмотр
Пригласить эксперта
Ответы на вопрос 4
AMar4enko
@AMar4enko
Эти заголовки нужно отправлять в ответ на любой тип http-запроса, не только GET
Ответ написан
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Некоторые браузеры неадекватно воспринимают звездочку в Access-Control-Allow-Origin
Пропишите конкретный хост в этот заголовок или подставляйте его из req.headers.host чтобы принимать любой хост.
Так же можно попробовать midleware cors
Ответ написан
Комментировать
@MNB
Перед постом клиент отправляет OPTION

res.header('Access-Control-Allow-Methods', 'POST,GET,OPTION');


или уберите вовсе Access-Control-Allow-Methods
тогда все методы будут доступны

Читать можно тут https://ru.wikipedia.org/wiki/Cross-origin_resourc...
Ответ написан
@Scorpiored88 Автор вопроса
И так :
req.headers.host - не срабатывает,так как до этого даже не доходит.
При отправке запроса в логе сервера видно лишь :

OPTIONS /dstnat/?param1=somedata&param2=somedata 200 9.461 ms - 4


Так же не помогает и

res.header('Access-Control-Allow-Methods', 'POST,GET,OPTION');

и даже если убрать этот параметр
и даже если при отправке POST запроса на стороне клиента добавляю

{headers: { 'Access-Control-Allow-Origin': '*'}}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы