Когда ответ на $ .ajax равен 301, могу ли я программно получить новый URL?
Есть ли способ получить URL, на который вы в конечном итоге будете перенаправлены, когда ответ на запрос xhr будет 301?
У меня есть сайт, который содержит многочисленные устаревшие URL из более старой версии, которые возвращают 301 ответ на правильный новый URL.
В служебных целях я хотел бы иметь возможность сделать запрос на старый URL-адрес и получить новый, т. Е. Отправить запрос по адресу /oldpage.aspx? Foo = someParam & quot ;, вернуть новый URL-адрес & quot; / arbitaryNewPageName / someParam & Quot ;.
Я играл с этим в консоли 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>
Я вижу в firebug, что когда этот код запускается, он выполняет один GET для /oldpage.aspx? Foo = someParam & quot; и получает ответ 301, затем другой GET для &bitaryNewPageName / someParam & quot ;.
Для первого запроса я вижу перенаправленный URL-адрес в значении Location заголовка ответа. К сожалению, второй запрос передается функции $ .ajax.success, и он имеет только перенаправленный URL-адрес в значении Referrer заголовка запроса.
Возможно, есть способ перехватить ответ на первый ответ или, возможно, увидеть заголовки запроса для второго запроса?
Edit: Спасибо всем за ответы. Я думаю, что мне нужно немного рассказать о том, что именно я ищу.
Бизнес-пользователь попросил меня создать список, который связывает устаревшие URL-адреса с новыми URL-адресами. Поскольку я уже реализовал средство перенаправления устаревших URL-адресов на новые URL-адреса на сервере, я надеялся свести на нет эту работу и создать сценарий, который помещал бы запросы на устаревшие URL-адреса и получал URL-адреса, на которые были перенаправлены запросы. Что-то вроде этого:
<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>
Суть моего вопроса заключается в следующем:Can I get the URL my request was redirected to from the XHR? Пока что, похоже, ответ «нет».