2

Я использую nginx в Ubuntu 12.04, есть ли какой-нибудь модуль, который я могу установить через диспетчер пакетов, чтобы nginx волшебным образом поддерживал запросы заголовков HTTP OPTIONS вместо возврата HTTP 405? Я хотел бы избежать дополнительных шагов компиляции, если это может помочь.

1 ответ1

1

Я все еще хотел бы реальное решение этого, но на данный момент, я нашел это, и я использую следующее решение:

location / {
    if ($request_method = OPTIONS ) {
        add_header Content-Length 0;
        add_header Content-Type text/plain;
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Headers 'origin, x-requested-with, content-type, accept';
        add_header Access-Control-Allow-Methods 'GET, POST';
        return 200;
    }
}

Я разрешаю все запросы CORS, которые являются моим локальным хостом, но знайте, что это существует для вашей собственной безопасности и, следовательно, не будьте настолько либеральными с Access-Control-Allow-Origin .

Кроме того, я использую angularjs, и запросы POST отменялись даже после того, как запрос OPTIONS был очищен с соответствующими разрешениями. Не знаю, в чем смысл всего предполетного события. В любом случае, добавление линий Access-Control за пределами блока местоположения исправило это. Как это:

location / {
                try_files $uri $uri/ /index.php?$query_string;
                if ($request_method = OPTIONS ) {
                        add_header Content-Length 0;
                        add_header Content-Type text/plain;
                        add_header Access-Control-Allow-Origin *;
                        add_header Access-Control-Allow-Headers 'origin, x-requested-with, content-type, accept';
                        add_header Access-Control-Allow-Methods 'GET, POST';
                        return 200;
                }
        }

        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Headers 'origin, x-requested-with, content-type, accept';
        add_header Access-Control-Allow-Methods 'GET, POST';

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .