¿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)?Impedir la redirección de Xmlhttprequest
Respuesta
no de acuerdo con the W3C standard for the XMLHttpRequest object (énfasis añadido):
Si la respuesta es una redirección HTTP:
Si el origen de la URL transmitida por la cabecera ubicación es mismo origen con el El origen de XMLHttpRequest y el redireccionamiento no infringen las precauciones infinitas de bucle , transparente siguen el redireccionamiento mientras observa las reglas de evento de solicitud del mismo origen.
Eran considering para una versión futura:
Esta especificación no incluye las siguientes características que están siendo considerado para una versión futura de esta especificación:
- Propiedad para deshabilitar los siguientes redireccionamientos;
pero la especificación latest 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 la redirección y, por ejemplo, detectar las condiciones en las que desea descartar la respuesta.
El nuevo Fetch API soporta diferentes modos de manejo de redirección: follow
, error
, y manual
, 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, está listo para irse.
También debe tener en cuenta que las solicitudes realizadas a través de esta API no son cancelables
yet.
Ellos are ahora.
En cuanto a XMLHttpRequest, puede 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();
Usted no recibirá el código de estado, pero se encuentra la nueva URL sin necesidad de descargar toda la página de eso.
A veces el uso de '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 -> HTTPS –
- 1. Impedir la redirección en el envío del formulario
- 2. jQuery: Impedir la tecla enter
- 3. Captura ubicación para redireccionamiento de JavaScript XMLHttpRequest
- 4. ¿Resolver la redirección de NSURL?
- 5. ¿Impedir la ejecución de archivos php cargados?
- 6. Impedir la creación de subprocesos en AppDomain
- 7. Impedir la captura de pantalla con DirectX
- 8. ¿Cómo obtener la respuesta de XMLHttpRequest?
- 9. jQuery equivalente a la carga de XMLHttpRequest?
- 10. XMLHttpRequest en la extensión de Firefox
- 11. ¿Dónde puedo encontrar la implementación de XMLHttpRequest?
- 12. impedir la importación de la función de la biblioteca estática
- 13. XMLHttpRequest no agrega el encabezado - "X-Requerido-Con: XMLHttpRequest"
- 14. Impedir el desplazamiento en el navegador del dispositivo móvil, sin impedir el enfoque de la entrada
- 15. PHP redirección sosteniendo la escritura
- 16. jquery ajax form - cómo obtener la URL de redirección?
- 17. Impedir copiar texto en la página web
- 18. Impedir que networksetup solicite la contraseña
- 19. Impedir vista parcial desde la carga
- 20. Impedir el reenvío de formularios
- 21. XmlHttpRequest vs jQuery
- 22. Chrome XmlHttpRequest Hanging
- 23. cruz XMLHTTPRequest dominio
- 24. Impedir que Excel salga de
- 25. Autenticación básica con XMLHTTPRequest
- 26. Cancelando el xmlhttprequest
- 27. selección Impedir Shift + Clic
- 28. Empty responseText from XMLHttpRequest
- 29. Impedir selección en HTML
- 30. Restricciones del getResponseHeader() de XMLHttpRequest
Lo que es ridículo es cuando la redirección transparente implica sobreescribir algunos encabezados HTTP que se establecieron en la solicitud original. Específicamente, si el encabezado "Aceptar" se estableció en un tipo de contenido específico, Firefox no puede incluir este encabezado al seguir el redireccionamiento (lo que hace que sea un poco más difícil desarrollar servicios web completamente basados en REST que usen este encabezado ... queja). – ruquay
Un poco más de búsqueda me trajo este informe de error bastante viejo: https://bugzilla.mozilla.org/show_bug.cgi?id=401564 – ruquay
De acuerdo, defecto de diseño totalmente rediculus. – Rasive