9

javascriptを使用してユーザーを新しいWebページにリダイレクトする場合location.href = <url>、宛先WebサーバーはどのREFERERヘッダーを認識しますか?

4

3 に答える 3

9

いくつかの例外を除いて、送信されるヘッダーは、リダイレクトを行ったページのリファラーではなく、リダイレクトが設定されたページのものです。これは、元のリファラーを保持するサーバー側のリダイレクトとは対照的です。

したがって、訪問者がからA.htmlに移動しB.html、へのリダイレクトをB.htmlトリガーすると、Webサーバーはリファラーと見なされます。(サーバー側でからへのリダイレクトを行った場合は、のリファラーになります。)location.hrefC.htmlB.htmlB.htmlC.htmlA.htmlC.html

古いバージョンのInternetExplorerは、(いつものように)HTTPSからHTTPにリダイレクトするように、空白のヘッダーを送信します。

于 2011-04-14T01:23:54.137 に答える
4

リンクをクリックするのと同じように、元のページが表示されます。

任意のページからこれをテストするには、phpinfo()ページまたはヘッダーをエコーする他のページにリダイレクトします。次に例を示します。

window.location='http://hosting.iptcom.net/phpinfo.php';

(ランダムなグーグル検索から引き出されたページ)

于 2011-04-14T01:24:45.850 に答える
3

ほとんどのブラウザは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();
}
于 2011-04-14T01:29:56.610 に答える