Gibt es eine Möglichkeit, die URL zu erhalten, an die Sie letztendlich weitergeleitet werden, wenn die Antwort auf eine xhr-Anfrage 301 ist?
Ich habe eine Website, die zahlreiche Legacy-URLs aus einer älteren Version enthält, die 301 Antworten auf die korrekte neue URL zurückgeben.
Für Dienstprogrammzwecke möchte ich in der Lage sein, eine Anfrage an eine alte URL zu stellen, und in der Lage sein, die neue Anfrage an "/oldpage.aspx?foo=someParam" zu senden, erhalten Sie die neue zurück URL "/ arbitraryNewPageName/someParam".
Ich habe mit dieser in der Firebug-Konsole spielen um:
$.ajax({
url: "/oldpage.aspx?foo=someParam",
success: function(response, status, jqxhr){
//poking around, trying to get the new URL, "/arbitraryNewPage/someParam"
console.log(jqxhr.getAllResponseHeaders());
console.log(jqxhr);
},
beforeSend: function(jqxhr, settings){
console.log(jqxhr);
console.log(settings);
}
});
ich in Firebug sehen, dass, wenn dieser Code ausgeführt wird, tut es ein GET auf „/oldpage.aspx?foo=someParam“ , und erhält eine 301 Antwort, dann ein weiteres GET zu "/ arbitraryNewPageName/someParam".
Für die erste Anfrage, sehe ich die umgeleitete URL in der Location-Wert der Antwort-Header. Leider ist die zweite Anfrage, was an die Funktion $ .ajax.success übergeben wird, und sie hat nur die umgeleitete URL im Referrer-Wert des Anfrage-Headers.
Gibt es vielleicht eine Möglichkeit, die Antwort auf die erste Antwort abzufangen, oder vielleicht die Request-Header für die zweite Anfrage zu sehen?
Bearbeiten: Vielen Dank für die Antworten. Ich denke, ich muss einen kleinen Hintergrund geben, um zu klären, wonach genau ich suche.
Ein Geschäftsbenutzer hat mich gebeten, eine Liste zu erstellen, die ältere URLs mit neuen URLs verknüpft. Da ich bereits eine Möglichkeit implementiert habe, Legacy-URLs auf neue URLs auf dem Server umzuleiten, hoffte ich, diese Arbeit abzuhaken und ein Skript zu erstellen, das Anfragen an die Legacy-URLs und die URLs, an die die Anfragen weitergeleitet wurden, geschickt hat. Etwas wie folgt aus:
for (var i = 0; i < arrayOfLegacyUrls.length; i++)
{
$.ajax({
url: arrayOfLegacyUrls[i],
success: function(response, status, jqxhr){
var newUrl = "???"; //do magic to get URL that request was redirected to
writeToFileForBusinessUser(arrayOfLegacyUrls[i], newUrl);
}
});
}
Der Kern meiner Frage ist: Kann ich die URL meiner Anfrage vom XHR umgeleitet wurde? Bis jetzt scheint die Antwort "nein" zu sein.
Sie können diesen Beitrag lesen möchten: http://stackoverflow.com/a/1534662/64741 – Zachary
möglich Duplikat [Die Bestimmung, was jQuery .ajax() löst eine Kette von Umleitungen zu] (http://stackoverflow.com/questions/6767618/determining-what-jquery-ajax-resolves-a-string-of-redirects-to) – JAAulde