Eu ainda gostaria de uma solução real para isso, mas por enquanto, eu encontrei isso e estou usando a seguinte solução:
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; } }
Estou permitindo que todas as solicitações CORS sejam meu localhost, mas tenha cuidado com isso para sua própria segurança e, portanto, não seja tão liberal com Access-Control-Allow-Origin
.
Além disso, estou usando o angularjs e as solicitações POST
foram canceladas mesmo depois que a solicitação OPTIONS
foi limpa com as permissões adequadas. Não sei qual é o ponto de toda a coisa de preflight. De qualquer forma, adicionar as linhas de controle de acesso fora do bloco de localização fixa isso. Assim:
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';