cors preflight

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 o POST
  • ha configurado encabezados de solicitud personalizados que no sean Accept , Accept-Language , Content-Language Content-Type , DPR , Downlink , Save-Data , Viewport-Width o Width
  • el encabezado de solicitud Content-Type tiene un valor distinto de application/x-www-form-urlencoded , multipart/form-data o text/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:

  1. Examine la URL en el encabezado de respuesta de Location en la respuesta a la solicitud de OPTIONS .
  2. 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 .