Estoy tratando de enviar una solicitud de publicación desde un javascript del lado del cliente (buscar) a mi servidor que usa Nginx como servidor web. El javascript del lado del cliente se ejecuta en un dominio diferente.
Tengo problemas para configurar Nginx para que responda con los encabezados adecuados, cuando pruebo la configuración a continuación, obtengo un 405 No permitido en la solicitud de verificación previa:
location /cookie/ { root /myPlace; add_header Allow 'GET, POST, OPTIONS' always; add_header 'Access-Control-Allow-Origin' '$http_origin' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; add_header 'Access-Control-Allow-Credentials' 'true' always; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always; index index.php; }Cuando pruebo la configuración a continuación, la verificación previa es exitosa y contiene todos los encabezados necesarios para CORS, pero los principales errores de solicitud a MissingAllowOriginHeader , el error de la consola es el familiar encabezado No 'Access-Control-Allow-Origin' está presente en el solicitado recurso.
Aquí está la configuración que da como resultado el comportamiento descrito anteriormente:
location /cookie/ { root /myPlace; add_header Allow 'GET, POST, OPTIONS' always; add_header 'Access-Control-Allow-Origin' '$http_origin' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; add_header 'Access-Control-Allow-Credentials' 'true' always; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always; if ($request_method = 'OPTIONS') { add_header 'Access-Control-Max-Age' 1728000; add_header 'Content-Type' 'text/plain charset=UTF-8'; add_header 'Content-Length' 0; add_header 'Access-Control-Allow-Origin' '$http_origin' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; add_header 'Access-Control-Allow-headers' 'Content-Type' always; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always; return 204; } index index.php; }Lo extraño es que la solicitud principal en este caso no devuelve ningún encabezado CORS, aunque la verificación previa tiene todos los encabezados necesarios y no genera errores.
¿Alguna idea de cómo puedo superar estos errores de CORS?
Si ayuda, este es el código javascript que uso en el lado del cliente:
let theData = { id: "123", }; fetch("https://myServer.com/cookie/", { method: 'POST', mode: 'cors', cache: 'no-cache', headers: { 'Content-Type': 'application/json' }, redirect: 'follow', body: JSON.stringify(theData), });Gracias