Czy istnieje sposób na uzyskanie adresu URL, do którego nastąpi ostateczne przekierowanie, gdy odpowiedź na żądanie xhr wynosi 301?
Mam witrynę, która zawiera wiele starszych adresów URL ze starszej wersji, które zwracają 301 odpowiedzi na poprawny nowy adres URL.
Dla celów użytkowych, chciałbym mieć możliwość złożenia wniosku do starego adresu URL i móc pobrać nowe, tj. Wysłać zapytanie do "/oldpage.aspx?foo=someParam", uzyskać nowe url "/ arbitraryNewPageName/someParam".
Grałem około z tym w konsoli Firebug
$.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);
}
});
widzę w Firebug, że gdy ten kod działa, robi jeden dostać do „/oldpage.aspx?foo=someParam” i otrzymuje odpowiedź 301, następnie inny GET do "/ arbitraryNewPageName/someParam".
Po pierwszym żądaniu widzę przekierowany adres URL w polu Lokalizacja nagłówka odpowiedzi. Niestety drugie żądanie jest przekazywane do funkcji $ .ajax.success i ma tylko przekierowany adres URL w wartości Referrer nagłówka żądania.
Czy istnieje sposób, aby przechwycić odpowiedź na pierwszą odpowiedź, lub może zobaczyć nagłówki żądań dla drugiego żądania?
Edytuj: Dziękuję wszystkim za odpowiedzi. Myślę, że muszę podać trochę tła, aby wyjaśnić, czego dokładnie szukam.
Użytkownik biznesowy poprosił mnie o utworzenie listy, która łączy starsze adresy URL z nowymi adresami URL. Ponieważ już wdrożyłem sposób przekierowania starszego adresu URL na nowe adresy URL na serwerze, miałem nadzieję, że odłożyłem tę pracę i utworzę skrypt, który umieszczał żądania na starszych adresach URL i uzyskiwał adresy URL, do których przekierowano żądania. Coś takiego:
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);
}
});
}
Sedno moje pytanie jest takie: Czy mogę dostać URL mój wniosek został przekierowany z XHR? Jak dotąd odpowiedź brzmi "nie".
Możecie chcą czytać tego posta: http://stackoverflow.com/a/1534662/64741 – Zachary
możliwe duplikat [Ustalenie co .ajax jQuery() rozwiązuje ciąg przekierowań to] (http://stackoverflow.com/questions/6767618/determining-what-jquery-ajax-resolves-a-string-of-redirects-to) – JAAulde