Tengo esta configuración en mi Nginx
server { listen 8080; add_header Access-Control-Allow-Origin *; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'Content-Type'; } Ahora tengo mi aplicación web que hace GET y POST para GET . Funciona bien, pero si hago Ajax POST , aparece este error.
XMLHttpRequest no puede cargar 'URL' . La respuesta a la solicitud de verificación previa no pasa la verificación de control de acceso: no hay ningún encabezado 'Access-Control-Allow-Origin' en el recurso solicitado. Origen Por lo tanto, no se permite el acceso a 'Origen'. La respuesta tenía el código de estado HTTP 404.
Si hago una solicitud 'GET', puedo ver esto en mi respuesta.
Access-Control-Allow-Headers:Content-Type Access-Control-Allow-Methods:GET, POST, OPTIONS Access-Control-Allow-Origin:*Pero si hago una publicación no veo nada de eso.
Tuve el mismo problema y lo resolví agregando la palabra clave always a mi directiva add_header . Como se indica en la documentación :
add_header: agrega el campo especificado a un encabezado de respuesta siempre que el código de respuesta sea igual a 200, 201, 204, 206, 301, 302, 303, 304 o 307. [...]Si se especifica el parámetro
always(1.7.5), el campo de encabezado se agregará independientemente del código de respuesta.
Lo que estaba sucediendo es que, sin always , mi solicitud GET se devolvió 200 y, por lo tanto, tenía los encabezados esperados, mientras que mi POST obtenía un 400, por lo tanto, sin los encabezados y, por lo tanto, provocaba errores CORS.