Quando uma resposta a $ .ajax é 301, posso obter o novo URL programaticamente?
Existe uma maneira de obter o URL para o qual você é redirecionado quando a resposta a uma solicitação xhr é 301?
Eu tenho um site que contém vários URLs legados de uma versão mais antiga, que retornam 301 respostas para o novo URL correto.
Para fins de utilidade, eu gostaria de poder fazer um pedido para um URL antigo, e ser capaz de recuperar o novo, ou seja, enviar solicitação para "/oldpage.aspx?foo=someParam", recuperar o novo URL "/ arbitaryNewPageName / someParam ".
Eu tenho brincado com isso no console do 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>
Eu posso ver no firebug que quando este código é executado, ele faz um GET para "/oldpage.aspx?foo=someParam" e obtém uma resposta 301, em seguida, outro GET para "/ arbitaryNewPageName / someParam".
Para o primeiro pedido, vejo o URL redirecionado no valor de Localização do cabeçalho de resposta. Infelizmente, a segunda solicitação é o que é passado para a função $ .ajax.success e ela possui apenas a URL redirecionada no valor Referenciador do cabeçalho da solicitação.
Existe talvez uma maneira de interceptar a resposta à primeira resposta ou talvez ver os cabeçalhos da solicitação para a segunda solicitação?
Editar: Obrigado a todos pelas respostas. Acho que preciso dar um pouco de conhecimento para esclarecer exatamente o que estou procurando.
Um usuário empresarial me pediu para criar uma lista que associa URLs legados a novos URLs. Como já implementei um meio de redirecionar os URLs herdados para novos URLs no servidor, esperava recuperar esse trabalho e criar um script que fizesse solicitações aos URLs herdados e recebesse as URLs para as quais as solicitações foram redirecionadas. Algo assim:
<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>
O ponto crucial da minha pergunta é este:Posso obter o URL para o qual minha solicitação foi redirecionada do XHR? Até agora, a resposta parece ser "não".