Gdy odpowiedź na $ .ajax wynosi 301, czy mogę programowo uzyskać nowy adres URL?

Czy istnieje sposób na uzyskanie adresu URL, do którego zostaniesz ostatecznie przekierowany, gdy odpowiedź na żądanie xhr wynosi 301?

Mam witrynę zawierającą 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 móc wysłać żądanie do starego adresu URL i móc pobrać nowy, tj. Wysłać żądanie do „/oldpage.aspx?foo=someParam”, odzyskać nowy adres URL ”/ arbitaryNewPageName / someParam ”.

Bawiłem się tym w konsoli Firebug:

<code>    $.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);
            }
        });
</code>

Widzę w firebug, że gdy ten kod działa, robi jeden GET do „/oldpage.aspx?foo=someParam” i otrzymuje odpowiedź 301, a następnie GET do „/ arbitaryNewPageName / someParam”.

W przypadku pierwszego żądania widzę przekierowany adres URL w wartości 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 może istnieje sposób na przechwycenie odpowiedzi na pierwszą odpowiedź, a może zobaczenie nagłówków żądania dla drugiego żądania?

Edytować: Dziękuję wszystkim za odpowiedzi. Myślę, że muszę wyjaśnić, czego dokładnie szukam.

Użytkownik biznesowy poprosił mnie o utworzenie listy, która kojarzy starsze adresy URL z nowymi adresami URL. Ponieważ zaimplementowałem już sposób przekierowywania starszych adresów URL na nowe adresy URL na serwerze, miałem nadzieję, że zejdę z pracy i utworzę skrypt, który umieściłby żądania w starszych adresach URL i dostał adresy URL, na które były przekierowywane żądania. Coś takiego:

<code>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);
            }
        });
}
</code>

Sedno mojego pytania jest następujące:Czy mogę uzyskać adres URL, do którego moje żądanie zostało przekierowane z XHR? Jak dotąd odpowiedź wydaje się być „nie”.

questionAnswers(2)

yourAnswerToTheQuestion