javascriptを使用してユーザーを新しいWebページにリダイレクトする場合location.href = <url>
、宛先WebサーバーはどのREFERERヘッダーを認識しますか?
3 に答える
いくつかの例外を除いて、送信されるヘッダーは、リダイレクトを行ったページのリファラーではなく、リダイレクトが設定されたページのものです。これは、元のリファラーを保持するサーバー側のリダイレクトとは対照的です。
したがって、訪問者がからA.html
に移動しB.html
、へのリダイレクトをB.html
トリガーすると、Webサーバーはリファラーと見なされます。(サーバー側でからへのリダイレクトを行った場合は、のリファラーになります。)location.href
C.html
B.html
B.html
C.html
A.html
C.html
古いバージョンのInternetExplorerは、(いつものように)HTTPSからHTTPにリダイレクトするように、空白のヘッダーを送信します。
リンクをクリックするのと同じように、元のページが表示されます。
任意のページからこれをテストするには、phpinfo()ページまたはヘッダーをエコーする他のページにリダイレクトします。次に例を示します。
window.location='http://hosting.iptcom.net/phpinfo.php';
(ランダムなグーグル検索から引き出されたページ)
ほとんどのブラウザはlocation.hrefを使用してHTTP_REFFERERを渡しますが、IEが渡さない場合もあります。
refferersがあなたにとって本当に重要である場合、あなたはこれを行うことができます:
function goTo(url) {
var a = document.createElement("a");
if(!a.click) { //Only IE has .click so if it doesnt exist use the simple method where the refferer is passed on other browsers.
location.href = url;
return;
}
a.setAttribute("href", url);
a.style.display = "none";
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(a);
a.click();
}