que open example ejemplo javascript ajax xmlhttprequest

javascript - open - Impedir la redirección de Xmlhttprequest



xmlhttprequest post json (4)

¿Es posible evitar que el navegador siga redireccionamientos al enviar XMLHttpRequest-s (es decir, para recuperar el código de estado de redireccionamiento y manejarlo yo mismo)?


No de acuerdo con el estándar W3C para el objeto XMLHttpRequest (énfasis añadido):

Si la respuesta es una redirección HTTP:

Si el origen de la URL transmitida por el encabezado de ubicación es del mismo origen con el origen XMLHttpRequest y la redirección no infringe las precauciones de bucle infinito, siga de forma transparente la redirección mientras observa las reglas de suceso de solicitud de origen idéntico.

Lo estaban considering para una versión futura:

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 los siguientes redireccionamientos;

pero la latest especificación ya no menciona esto.


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 ejecuta IE en Windows, entonces puede usar WinHTTP en su lugar para establecer una opción para evitar ese comportamiento, pero esa es una solución muy limitante.


Puede usar la propiedad responseURL para obtener el destino de la redirección o verificar si la respuesta finalmente fue extraída de una ubicación que usted 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 redireccionamiento y, por ejemplo, detectar condiciones cuando desea descartar la respuesta.


La nueva API de extracción admite diferentes modos de gestión de redireccionamiento: follow , error y manual , pero no puedo encontrar una manera de ver la nueva URL o el código de estado cuando se ha cancelado la redirección. Simplemente puede detener la redirección en sí, y luego parece un error (respuesta vacía). Si eso es todo lo que necesita, está listo para irse. Además, debe tener en cuenta que las solicitudes realizadas a través de esta API yet no se pueden cancelar. Ellos are ahora.

En cuanto a XMLHttpRequest, puedes HEAD el servidor e inspeccionar si la URL ha cambiado:

var http = new XMLHttpRequest(); http.open(''HEAD'', ''/the/url''); http.onreadystatechange = function() { if (this.readyState === this.DONE) { console.log(this.responseURL); } }; http.send();

No obtendrá el código de estado, pero encontrará la nueva URL sin descargar toda la página de la misma.