リクエストヘッダーのhttpリファラー情報を削除または非表示にする方法ですか?おそらくjavascript pythonまたはDjangoのスクリプトを使用して他のサイトにアクセスするユーザーのhttpリファラー情報を削除したい
例:
Host slogout.espncricinfo.com
User-Agent Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection keep-alive
Referer http://slogout.espncricinfo.com/index.php?page=index&level=login
2015年の時点で、これがRefererヘッダーの送信を防ぐ方法です:
これをWebページのheadセクションに追加するだけです:
<meta name="referrer" content="no-referrer" />
これはリンクとAjaxリクエストの両方で機能します(---)ページ上のJavaScriptコードによって作成されます。
その他の有効なmeta
オプションは次のとおりです。
<meta name="referrer" content="unsafe-url" />
<meta name="referrer" content="Origin" />
<meta name="referrer" content="no-referrer-when-downgrade" />
<meta name="referrer" content="Origin-when-cross-Origin" />
•ブラウザで動作するかどうかは、こちらで確認してください。 http://caniuse.com/#feat=referrer-policy
•ここの仕様を参照してください: http://w3c.github.io/webappsec/specs/referrer-policy/
また、ブラウザはOrigin
ヘッダーを送信することに注意してください(CORSリクエストとPOSTリクエストを含む、こちらを参照してください: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin )これにはドメインとポートが含まれ、私の知る限り削除できません。<meta name="referrer" content="Origin" />
を使用する場合、リファラーにはOrigin
ヘッダー。ユーザーの現在のページを非表示にするため、プライバシーの観点からはすでに有効です。
更新:
JavaScriptのみを使用してリファラーを削除する場合は、Ajaxリクエストを行う直前に適切なメタタグを動的に追加できます。このJavaScriptは<meta name="referrer" content="no-referrer" />
をWebページのheadセクションに追加します:
var meta = document.createElement('meta');
meta.name = "referrer";
meta.content = "no-referrer";
document.getElementsByTagName('head')[0].appendChild(meta);
Javascriptにはクロスブラウザソリューションがあります。動的に作成されたIframes
を使用し、 概念実証 をチェックします(免責事項:この目的のためにコーディングした小さなJSライブラリを使用します)。
完全なURLの非表示にのみ関心があり、ドメイン名を公開したままにしたい場合は、この小さなJavascriptコードが機能します。
ユーザーはexample.com/secret_url_we_want_to_hide
にいます。ユーザーはgoogle.com
に送信することになっているリンクをクリックします。しかし<a href="http://google.com">Go to Google</a>
の代わりに、これを使用します:
a href="http://example.com/redirect.html#http://google.com">Go to Google</a>
/redirect.html
は次を含むHTMLページです:(編集:アップデートをご覧ください!)
<html><head></head><script>
window.location.replace(location.hash.substring(1));
</script></html>
Google.comでは、リファラータグにhttp://example.com/redirect.html
が表示され、実際のexample.com/secret_url_we_want_to_hide
は表示されません。
UPDATE:
Firefoxには、location.hashを持つ bug があり、回避策は次のとおりです。
<html><head></head><script>
workaround_hash=location.href.split('#').splice(1).join('#');
window.location.replace(workaround_hash);
</script></html>
使用するブラウザのバージョンに応じて、それを行うためのさまざまなメカニズムがあります。どのブラウザでも、宛先がHTTP経由の場合、HTTPSページにリダイレクトしてターゲットページにナビゲートすることにより、Originを「洗濯」できます。
IEの場合、JavaScript(window.openなど)を使用してナビゲーションを実行できます。これにより、リファラーが抑制されます。または、META Refreshを使用することもできますが、それにはパフォーマンスコストがかかります。 WebKitベースのブラウザーについては、NoReferrer LINK RELオプションを参照してください。 http://www.webkit.org/blog/907/webkit-nightlies-support-html5-noreferrer-link-relation/
私は同様の解決策を探していましたが、リファラーを空白にしましたが、参照元のウェブサイトからのユニークな訪問のみをカウントしていました。私が抱えていた問題は、誰かが特定のリンクから私のサイトを訪れた場合、訪問カウンターが上がることでしたが、その人がページを更新した場合、訪問者カウンターはまだ上がっていました。
Googleを使用してこのトピックに関するいくつかのリソースにアクセスしました。はい、誰かがphp.netで解決策を調べるように指示されるまで、答えを見つけるのは非常に困難でした。
私は使用して解決策を見つけました
header('Refresh: 0; url=index.php');
しかし、上記のコードだけでは解決策ではありません。解決策はその配置にあります。完全なコードは次のとおりです。
$ref=@$_SERVER[HTTP_REFERER];
$domain = parse_url($ref, PHP_URL_Host);
If ($domain === "google.com")
{
header('Refresh: 0; url=index.php'); //Resets header info to Host site so that on page refresh, the hit counter does not
} // increase but increases only when someone visits from google url again
「更新」後、ヘッダー情報はホストサイトの情報に変更されるため、ページの更新時に「if」ステートメントは検証されず、ヒットカウンターは増加しません。
IFブロック内にヒットカウンターを配置できます。また、ウェブサイトへの空白ヒットを記録するさまざまなパラメーターと、すべてのページロード/ページビューを記録するさまざまなパラメーターをプログラムすることもできます。
それが役に立てば幸い.....
JavaScriptを介してRefererヘッダーにアクセスすることは想定できません。 httpのUser-Agentヘッダーと同様に、javascriptからrefererなどにアクセスすることはできません。これらのヘッダーへの値は、ブラウザーによって供給されます。あなたができることは、あなたがそうする必要がある場合、いくつかのトリッキーな回避策です。
history.replace()method を使用して、http://example.com/search?q=100
と置換する http://example.com/search
、次の方法で実行できます。
history.replace(null,null,'search')
お役に立てれば! :D
<meta name="referrer" content="no-referrer"/>
上記のコードをページに配置すると、すべての発信リンク(ユーザーのクリック)はリファラー情報を送信しません