Рассмотрим эту минимальную конфигурацию сервера nginx
server: {
listen 80;
server_name myserver;
location / {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS';
if ($request_method = 'OPTIONS') {
# Tell client that this pre-flight info is valid for 20 days
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
return 200 my-content;
}
}
и соответствующие вызовы curl
# this one works as expected
$ curl -v http://myserver
# ...
HTTP/1.1 200 OK
Server: nginx
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, OPTIONS
# ...
и
# this one is missing the Access-Control-Allow-* Headers
$ curl -v -X OPTIONS http://myserver
# ...
HTTP/1.1 204 No content
Server: nginx
Access-Control-Max-Age: 1728000
Content-Type: text/plain charset=UTF-8
Content-Length 0
Так что ПАРАМЕТРЫ в запросе отсутствует Access-Control-Allow-Origin и Доступ-Контроль-Разрешить-Методы заголовки, пока они правильно установлены для запроса GET. Добавление всегда Параметр к add_header директива тоже не работает.
Я использую nginx v1.11.1 в Ubuntu 16.04. Вы хоть представляете, в чем может быть проблема?