Я пытался использовать очень популярную конфигурацию для nginx, которая включает CORS и поддерживает сопоставление происхождения с помощью регулярных выражений.
Вот моя конфигурация:
server {
listen 80 default_server;
root /var/www;
location / {
if ($http_origin ~ '^http://(www\.)?example.com$') {
add_header Access-Control-Allow-Origin "$http_origin";
}
# Handling preflight requests
if ($request_method = OPTIONS) {
add_header Content-Type text/plain;
add_header Content-Length 0;
return 204;
}
}
}
Однако в этой конфигурации должны использоваться два условия: одно для соответствия имени исходного домена и другое для захвата предварительных запросов.Поэтому, когда второе условие сопоставлено, заголовки из первого условия не добавляются в ответ.
Согласно официальной статье If Is Evil , это ожидаемое поведение для nginx.
Если If Is Evil
как мне включить CORS в nginx?Или, может быть, есть способ как-то преодолеть это ограничение?