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