Есть ли способ получить 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-адреса на сервере, я надеялся избавиться от этой работы и создать script, который разместил запросы к устаревшим 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?. До сих пор ответ кажется "нет".