Вопрос: Разрешение запросов на кросс-поиск (CORS) на Nginx для 404 ответов


Я использую Nginx для обслуживания статических файлов в ответ на запросы CORS, используя технику, изложенную в этот вопрос, Однако, когда файл не существует, ответ 404 не содержит Access-Control-Allow-Origin: * заголовок, а также блок браузером.

Как я могу отправить Access-Control-Allow-Origin: * на 404 ответах?


21
2018-05-29 09:15


Источник




Ответы:


Несмотря на то, что это было задано давно, я собирал nginx с большим количеством модулей, но с более новой версией nginx, я обнаружил, что мне не нужно настраивать nginx, мне нужно было добавить always директивы.

http://nginx.org/en/docs/http/ngx_http_headers_module.html

Syntax: add_header name value [always];

Если задан всегда параметр (1.7.5), поле заголовка будет добавлено независимо от кода ответа.

Таким образом, настроенная версия CORS заголовки:

            if ($cors = "trueget") {
                    # Tells the browser this origin may make cross-origin requests
                    # (Here, we echo the requesting origin, which matched the whitelist.)
                    add_header 'Access-Control-Allow-Origin' "$http_origin" always;

                    # Tells the browser it may show the response, when XmlHttpRequest.withCredentials=true.
                    add_header 'Access-Control-Allow-Credentials' 'true' always;
            }

28
2018-06-22 11:37



always был ключом. Спасибо, что указал на меня, я сошел с ума! - bgondy


Я предполагаю, что вы в настоящее время используете add_header директивы. В документации отмечается, что это только устанавливает заголовок для кода состояния 200, 204, 301, 302 и 304. Чтобы установить заголовок для 404 кодов состояния, вам необходимо использовать more_set_headers директивы headers_more (вам может понадобиться перекомпилировать nginx для получения этого модуля). Следующее задало бы заголовок для всех кодов состояния:

more_set_headers 'Access-Control-Allow-Origin: *';

Вы также можете ограничить его конкретными кодами состояния:

more_set_headers -s '404' 'Access-Control-Allow-Origin: *';

8
2018-05-29 23:05