Während die anderen Leute, die diese Frage beantwortet haben, (leider) richtig sind, dass diese Informationen vom Browser vor uns verborgen werden, dachte ich, ich würde eine Problemumgehung veröffentlichen, die ich mir ausgedacht habe:
Ich habe meine Server-App so konfiguriert, dass ein benutzerdefinierter Antwortheader ( X-Response-Url
) festgelegt wird, der die angeforderte URL enthält. Immer wenn mein Ajax-Code eine Antwort erhält, prüft er, ob er xhr.getResponseHeader("x-response-url")
definiert ist. In diesem Fall vergleicht er ihn mit der URL, über die er ursprünglich angefordert hat $.ajax()
. Wenn sich die Zeichenfolgen unterscheiden, weiß ich, dass es eine Weiterleitung gab und zusätzlich, zu welcher URL wir tatsächlich gekommen sind.
Dies hat den Nachteil, dass eine serverseitige Hilfe erforderlich ist, und kann auch ausfallen, wenn die URL während des Roundtrips (aufgrund von Zitier- / Codierungsproblemen usw.) beschädigt wird. In 99% der Fälle scheint dies jedoch der Fall zu sein die Arbeit erledigt.
Auf der Serverseite war mein spezieller Fall eine Python-Anwendung, die das Pyramid-Webframework verwendet, und ich habe das folgende Snippet verwendet:
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