xhrリクエストへの応答が301のときに最終的にリダイレクトされるURLを取得する方法はありますか?
古いバージョンのレガシーURLが多数含まれているサイトがあり、正しい新しい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);
}
});
このコードを実行すると、「/ oldpage.aspx?foo = someParam」に対して1回GETを実行し、301応答を取得してから、「/ ArbitaryNewPageName/someParam」に対して別のGETを実行することがfirebugでわかります。
最初のリクエストでは、レスポンスヘッダーのLocation値にリダイレクトされたURLが表示されます。残念ながら、2番目のリクエストは$ .ajax.success関数に渡されるものであり、リクエストヘッダーのReferrer値にリダイレクトされたURLしかありません。
最初の応答への応答をインターセプトする方法、または2番目の要求の要求ヘッダーを確認する方法はありますか?
編集:回答をありがとうございました。私が探しているものを正確に明確にするために、少し背景を説明する必要があると思います。
ビジネスユーザーから、従来の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から取得できますか?これまでのところ、答えは「いいえ」のようです。