Есть ли способ получить 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? Пока ответ, кажется, «нет».