Когда ответ на $.ajax равен 301, могу ли я программно получить новый URL-адрес?

Есть ли способ получить URL-адрес, на который вы в конечном итоге перенаправляетесь, когда ответ на запрос xhr равен 301?

У меня есть сайт, содержащий множество устаревших URL-адресов из более старой версии, которые возвращают 301 ответ на правильный новый URL-адрес.

В служебных целях я хотел бы иметь возможность сделать запрос к старому URL-адресу и получить новый, т.е.отправить запрос на «/oldpage.aspx?foo=someParam», получить новый URL-адрес «/arbitaryNewPageName/someParam».

Я играл с этим в консоли 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);
            }
        });

Я вижу в firebug, что когда этот код запускается, он выполняет один GET для "/oldpage.aspx?foo=someParam" и получает ответ 301, затем еще один GET для "/arbitaryNewPageName/someParam".

Для первого запроса я вижу перенаправленный URL-адрес в значении Location заголовка ответа. К сожалению, второй запрос — это то, что передается функции $.ajax.success, и он имеет только URL-адрес перенаправления в значении Referrer заголовка запроса.

Возможно, есть способ перехватить ответ на первый ответ или посмотреть заголовки второго запроса?

Изменить:Спасибо всем за ответы. Я думаю, мне нужно немного рассказать, чтобы уточнить, что именно я ищу.

Бизнес-пользователь попросил меня создать список, связывающий устаревшие URL-адреса с новыми URL-адресами. Поскольку я уже реализовал средство перенаправления устаревших URL-адресов на новые URL-адреса на сервере, я надеялся отказаться от этой работы и создать сценарий, который размещал бы запросы на устаревшие URL-адреса и получал URL-адреса, на которые были перенаправлены запросы. Что-то вроде этого:

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

Суть моего вопроса в следующем:Могу ли я получить URL-адрес, на который был перенаправлен мой запрос из XHR? Пока ответ, кажется, «нет».

14
задан kaiz.net 1 May 2012 в 10:25
поделиться