CORS и не 200 statusCode

У меня CORS хорошо работает с Nginx. API предназначены для отправки кода состояния, отличного от HTTP 200, например, 401, 404 и т. д., в случае неверного ввода. Проблема в том, что Chrome отменяет/прерывает запрос, если получает код состояния, отличный от HTTP 200. По этой причине я не могу показать точную ошибку в веб-клиенте.

Что делать с ошибками кода состояния CORS, отличными от 200?


person Sameer Segal    schedule 11.06.2014    source источник


Ответы (2)


По умолчанию Nginx добавляет заголовки только для запросов, которые он считает успешными. Вы можете добавить заголовок без учета кода ответа, добавив параметр always в директиву add_header, например

add_header 'Access-Control-Allow-Origin' '*' always;

Добавления параметра always в заголовок Access-Control-Allow-Origin недостаточно. Параметр always нужно добавить в заголовки, которые нужно добавлять всегда. В некоторых случаях вам нужно будет добавить параметр always в заголовок Access-Control-Allow-Credentials.

add_header 'Access-Control-Allow-Credentials' 'true' always;
person Rune T. Sørensen    schedule 20.11.2015
comment
Выдает ошибку: nginx: [emerg] invalid number of arguments in "add_header" directive in /etc/nginx/include.d/cors:37 - person Alireza; 05.12.2018
comment
Возможно, уже слишком поздно, но какую версию nginx вы используете? Ключевое слово always было добавлено в версии 1.7.5. Для более ранних версий вам придется использовать more_set_headers, как указано ниже. - person Rune T. Sørensen; 22.07.2019

Вам нужно использовать модуль more_set_headers.

с -s вы можете указать больше кода состояния

more_set_headers -s '404,400,403' 'Access-Control-Allow-Origin: http://domain.com';

Однако, если вы не установили этот модуль в nginx, вам необходимо его перекомпилировать. чтобы скомпилировать его:

wget http://nginx.org/download/nginx-1.7.8.tar.gz
git clone https://github.com/openresty/headers-more-nginx-module.git
tar -xzvf nginx-1.7.8.tar.gz
cd nginx-1.7.8
./configure --prefix=/opt/nginx --add-module=/path/to/headers-more-nginx-module
make
make install
person llazzaro    schedule 21.12.2014