Mientras que las otras personas que respondieron a esta pregunta son (por desgracia) correcta que esta información se nos oculta por el navegador, pensé que había puesto una solución que se me ocurrió:
he configurado mi servidor de aplicaciones para establecer un encabezado de respuesta personalizado (X-Response-Url
) que contenga la url que se solicitó. Cada vez que mi código ajax recibe una respuesta, comprueba si está definido xhr.getResponseHeader("x-response-url")
, en cuyo caso lo compara con la URL que solicitó originalmente a través del $.ajax()
. Si las cadenas de texto difieren, sé que hubo una redirección y, además, a qué url llegamos en realidad.
Esto tiene el inconveniente de requerir alguna ayuda del lado del servidor, y también puede descomponerse si la URL se manda (debido a problemas de cotización/codificación, etc.) durante el viaje de ida y vuelta ... pero en el 99% de los casos, esto parece hacer el trabajo.
En el lado del servidor, mi caso concreto ha sido una aplicación Python utilizando el framework de desarrollo web de la pirámide, y utiliza el siguiente fragmento:
import pyramid.events
@pyramid.events.subscriber(pyramid.events.NewResponse)
def set_response_header(event):
request = event.request
if request.is_xhr:
event.response.headers['X-Response-URL'] = request.url
Este código será nunca trabajar bro ... – brothers28
Buena suerte con eso –