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';