¿Es posible evitar que el navegador siga las redirecciones al enviar XMLHttpRequest-s (es decir, para recuperar el código de estado de la redirección y manejarlo yo mismo)?
112
¿Es posible evitar que el navegador siga las redirecciones al enviar XMLHttpRequest-s (es decir, para recuperar el código de estado de la redirección y manejarlo yo mismo)?
No de acuerdo con el estándar W3C para el objeto XMLHttpRequest (énfasis agregado):
Si la respuesta es una redirección HTTP:
Si el origen de la URL transmitida por el encabezado Location es el mismo origen que el origen de XMLHttpRequest y la redirección no viola las precauciones de bucle infinito, siga de manera transparente la redirección mientras observa las reglas de eventos de solicitud del mismo origen.
Lo estaban considerando para un lanzamiento futuro:
Esta especificación no incluye las siguientes características que se están considerando para una versión futura de esta especificación:
- Propiedad para deshabilitar las siguientes redirecciones;
pero la última especificación ya no menciona esto.
El nuevo Fetch API soportes diferentes modos de manejo de redirección:
follow
,error
ymanual
, pero no puedo encontrar una manera de ver la nueva dirección URL o el código de estado cuando el cambio de dirección ha sido cancelada. Simplemente puede detener la redirección en sí, y luego parece un error (respuesta vacía). Si eso es todo lo que necesita, ya está listo.Además, debe tener en cuenta que las solicitudes realizadas a través de esta API aún no se pueden cancelar .Ahora lo son .En cuanto a XMLHttpRequest, puede acceder
HEAD
al servidor e inspeccionar si la URL ha cambiado:No obtendrá el código de estado, pero encontrará la nueva URL sin descargar la página completa.
fuente
OPTIONS
puede ser una mejor opción, de todos modos solo funciona para fines no generales, etc. el administrador había configurado la redirección de todo el sitio / esquema, como HTTP -> HTTPSPuede usar la
responseURL
propiedad para obtener el destino de la redirección o verificar si la respuesta se obtuvo finalmente de una ubicación que acepta.Esto, por supuesto, significa que el resultado se obtiene de todos modos, pero al menos puede obtener la información necesaria sobre el destino de la redirección y, por ejemplo, detectar las condiciones en las que le gustaría descartar la respuesta.
fuente
No, no hay ningún lugar en la API expuesto por XMLHttpRequest que le permita anular su comportamiento predeterminado de seguir un 301 o 302 automáticamente.
Si el cliente está ejecutando IE en Windows, puede usar WinHTTP en su lugar para configurar una opción para evitar ese comportamiento, pero esa es una solución muy limitante.
fuente