Podczas gdy inni ludzie, którzy odpowiedzieli na to pytanie, (niestety) mają rację, że te informacje są ukrywane przed nami przez przeglądarkę, pomyślałem, że opublikuję obejście, które wymyśliłem:
Skonfigurowałem aplikację serwera tak, aby ustawić niestandardowy nagłówek odpowiedzi ( X-Response-Url
) zawierający żądany adres URL. Za każdym razem, gdy mój kod Ajax otrzyma odpowiedź, sprawdza, czy xhr.getResponseHeader("x-response-url")
jest zdefiniowany, w takim przypadku porównuje go z adresem URL, którego pierwotnie zażądał $.ajax()
. Jeśli ciągi się różnią, wiem, że nastąpiło przekierowanie, a dodatkowo, do jakiego adresu URL doszliśmy.
Ma to tę wadę, że wymaga pomocy po stronie serwera, a także może się zepsuć, jeśli adres URL zostanie zablokowany (z powodu problemów z cytowaniem / kodowaniem itp.) Podczas podróży w obie strony ... ale w 99% przypadków wydaje się, że praca wykonana.
Po stronie serwera moim konkretnym przypadkiem była aplikacja w Pythonie korzystająca z frameworka internetowego Pyramid i użyłem następującego fragmentu kodu:
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
xhr.getResponseHeader("content-type")
zaczyna się odtext/html
i zawiera słowo kluczowe, takie jak „login”, i w razie potrzeby pokazuję, że „sesja wygasła”. To oczywiście nie jest tak naprawdę odpowiedź, ale obejście.