cors - Cómo resolver ''la verificación previa no es válida(redireccionar)'' o ''la redirección no está permitida para una solicitud de verificación previa''
preflight (1)
He seguido este paso para configurar mi servidor para habilitar CORS. https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api
Pero ahora en la consola de desarrollo de mi navegador, veo este mensaje de error:
XMLHttpRequest no puede cargar https://serveraddress/abc . La respuesta para la verificación previa no es válida (redireccionar)
¿Sabes qué puedo hacer para solucionarlo? Estoy haciendo una solicitud CORS en HTTPS. Creo que eso está causando la falla ''verificación previa no es válida (redirección)''. Pero no sé por qué o qué está redirigiendo la solicitud de OPCIONES.
Gracias.
Su código está activando su navegador para enviar una
solicitud de
OPTIONS
verificación previa de CORS
, y el servidor responde con una redirección
3xx
.
En su lugar, debe responder con un mensaje de éxito
2xx
.
Es posible que pueda ajustar su código para evitar que el navegador envíe la solicitud de
OPTIONS
.
En cuanto a lo que está sucediendo en este caso, es importante saber que los navegadores hacen una verificación previa de CORS si:
-
el método de solicitud no es
GET
,HEAD
oPOST
-
ha configurado encabezados de solicitud personalizados que no sean
Accept
,Accept-Language
,Content-Language
Content-Type
,DPR
,Downlink
,Save-Data
,Viewport-Width
oWidth
-
el encabezado de solicitud
Content-Type
tiene un valor distinto deapplication/x-www-form-urlencoded
,multipart/form-data
otext/plain
Si no puede cambiar su código para evitar la necesidad de que los navegadores realicen una verificación previa, entonces otra opción es:
-
Examine la URL en el encabezado de respuesta de
Location
en la respuesta a la solicitud deOPTIONS
. - Cambie su código para hacer la solicitud a esa otra URL directamente en su lugar.
La diferencia entre las URL podría ser algo tan simple como una barra diagonal final en la ruta; por ejemplo, es posible que deba cambiar la URL en su código a
http://localhost/api/auth/login/
(observe la barra diagonal final) en lugar de
http://localhost/api/auth/login
(sin barra diagonal).
Puede usar el panel Red en las herramientas del navegador para examinar la respuesta a la solicitud de
OPTIONS
y encontrar la URL de redireccionamiento en el valor del encabezado de respuesta de
Location
.