Назад | Перейти на главную страницу

nginx: заголовки CORS не добавляются для запроса OPTIONS

Рассмотрим эту минимальную конфигурацию сервера 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. Вы хоть представляете, в чем может быть проблема?