¿Qué sucede si el navegador recibe una respuesta de redireccionamiento a una solicitud de AJAX?Devolución redirigida como respuesta a la solicitud de XHR
Respuesta
¿Qué ocurre si el navegador recibe una respuesta de redireccionamiento a una solicitud de AJAX?
Si el servidor envía una redirección (también conocida como respuesta 302 más una ubicación: encabezado), el navegador sigue automáticamente la redirección. La respuesta a la segunda solicitud (asumiendo que tampoco es otra redirección) es lo que está expuesto a su programa.
De hecho, no tiene la capacidad de detectar si se ha producido una respuesta 302. Si la redirección 302 conduce a 200, entonces su programa actúa de manera idéntica como si la solicitud original condujera directamente a 200.
Esto ha sido mi experiencia y la behavior called out in the spec.
2016 Actualización: El tiempo ha pasado, y la buena noticia es que el nuevo fetch() API se spec'da para ofrecer finer-grained control of how redirects are handled, con un comportamiento por defecto similar a XHR. Dicho esto, solo funciona donde fetch() se implementa nativamente. Polyfill versions of fetch(), que se basan en XHR-continue to have XHR's limitations. Afortunadamente, native browser support parece estar redondeando muy bien.
El ajax-request
seguirá esa redirección afaik. El contenido real (.responseText
, .responseXML
) será el contenido de la página a la que se le redirige.
Es posible que pueda interceptar la redirección (status-code
, location-header
) en readyState
2 o 3, pero no está seguro de ello.
No, todos esos estados tienen exactamente el mismo estado. Incluso el valor de 'getAllResponseHeaders()' es igual. – sebastianwagner
- 1. Simular una solicitud GET XHR
- 2. Obtener url de solicitud del objeto xhr
- 3. Obtener la respuesta Content-Type encabezado de XHR
- 4. Solicitud/respuesta de registro con Apache CXF como XML
- 5. ¿Cómo veo la respuesta HTTP a una solicitud de ActiveResource?
- 6. JSF: solicitud inicial y solicitud de devolución de datos?
- 7. Respuesta múltiple Solicitud AJAX
- 8. ¿Es posible enviar encabezados personalizados con un XHR (solicitud "Ajax")?
- 9. enviar solicitud como jsonp, interpretar respuesta como texto, usando jQuery 1.5
- 10. Devolución de la respuesta de una llamada Jquery AJAX
- 11. Obteniendo json en la devolución de llamada de respuesta Ajax
- 12. valores de uso web de prueba en respuesta como parámetros para la siguiente solicitud
- 13. @ViewScoped llama a @PostConstruct en cada solicitud de devolución
- 14. Solicitud de token de acceso a la cuenta de servicio de Google OAuth2 da respuesta a 'Solicitud no válida'
- 15. Obteniendo la respuesta de la solicitud http sin contenido-longitud?
- 16. Solicitud POST a Struts2 con el complemento REST sin respuesta
- 17. Controlador de resorte Obtener solicitud/respuesta
- 18. ¿Cómo devolver un archivo HTML como respuesta a una solicitud POST?
- 19. Solicitud patrón/respuesta en la implementación de SOA
- 20. salida strace tmux redirigida a un archivo
- 21. Determinación de la URL redirigida en Python
- 22. IE8 trata la respuesta json como archivo e intenta descargarlo
- 23. ¿Cuáles son los argumentos de "respuesta" y "solicitud" en la devolución de llamada de "origen" de JQuery UI Autocomplete?
- 24. Devolución de la imagen Matplotlib como cadena
- 25. ¿Cómo accedo a la solicitud desde la devolución de llamada de señal request_finished?
- 26. JavaScript para volver a cargar la página como solicitud GET
- 27. JMeter: ¿cómo registrar la solicitud completa de una respuesta fallida?
- 28. ¿Cómo hacer una solicitud de cUrl sin recibir la respuesta?
- 29. Cola de almacenamiento de Azure: correlacione la respuesta a la solicitud
- 30. Recepción de respuesta (s) de N número de clientes en respuesta a una solicitud de difusión a través de UDP
Curiosamente, llegué a esto porque estoy experimentando una situación en la que aparentemente no se sigue la redirección ... esto sucede cuando la redirección viola la misma política de origen. – Gus
@Gus que probablemente sea lógico – Dmitry
¿Qué se supone que sucederá si la redirección conduce a un 401 en lugar de a un 200? Parece que me estoy encontrando con ese problema y estoy recibiendo errores con jQuery, así que estoy tratando de averiguar exactamente qué se supone que está haciendo el navegador/JS. –