65

リクエストヘッダーの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
4

11 に答える 11

11

Javascriptにはクロスブラウザソリューションがあり、Iframes動的に作成されたものを使用し、概念実証を確認します(免責事項:その目的のためにコーディングした小さなJSライブラリを使用します)。

于 2012-10-05T10:57:56.540 に答える
6

完全な 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.

アップデート:

Firefox にはlocation.hashに関するバグがあります。回避策は次のとおりです。

<html><head></head><script>
workaround_hash=location.href.split('#').splice(1).join('#');
window.location.replace(workaround_hash);
</script></html>
于 2014-08-29T19:01:20.170 に答える
4

使用するブラウザーのバージョンに応じて、これを行うためのさまざまなメカニズムがあります。どのブラウザでも、宛先が HTTP を介している場合、HTTPS ページにリダイレクトしてからターゲット ページに移動することで、オリジンを「洗浄」できます。

IE の場合、リファラーを抑制する JavaScript (window.open など) を使用してナビゲーションを実行できます。または、META Refresh を使用することもできますが、それにはパフォーマンス コストがかかります。WebKit ベースのブラウザーについては、NoReferrer LINK REL オプションを参照してください: http://www.webkit.org/blog/907/webkit-nightlies-support-html5-noreferrer-link-relation/

于 2011-07-25T14:55:06.370 に答える
1

私は同様の解決策を探していましたが、リファラーを空白にしましたが、参照元の Web サイトからのユニークな訪問をカウントするためだけでした。私が抱えていた問題は、誰かが特定のリンクから私のサイトにアクセスした場合、訪問カウンターが上昇することでしたが、その人がページを更新した場合、訪問カウンターは依然として上昇していました.

私はグーグルを使ってこのトピックに関するいくつかのリソースにアクセスしましたが、答えを見つけるのは非常に困難でした。

を使用して解決策を見つけました

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 ブロック内にヒット カウンターを配置できます。また、さまざまなパラメーターをプログラムして、ブランク ヒットを Web サイトに記録したり、さまざまなパラメーターをプログラムして、すべてのページロード/ページビューをログに記録したりすることもできます。

それが役に立てば幸い.....

于 2015-04-28T02:48:57.640 に答える
0

javascript を介して Referer ヘッダーにアクセスするという想定は不可能です。http の User-Agent ヘッダーと同様に、リファラーなどは JavaScript ではアクセスできません。これらのヘッダーへの値は、ブラウザーによって提供されます。必要な場合にできることは、いくつかのトリッキーな回避策です。

于 2011-07-25T20:07:02.807 に答える
0

ポリシー Referrer -Policyを設定する HTTP resonse ヘッダーもあることに言及している回答はありません。Apache で設定する方法は次のとおりです。

Header add Referrer-Policy "no-referrer"

または、おそらく、同じサイトにのみつながるリンクにアクセスするときにリファラーを送信するための、より弱いが安全なオプションです。

Header add Referrer-Policy "same-origin"
于 2020-12-26T23:52:06.940 に答える
-3

できません。リファラーを送信するかどうかはブラウザーの決定です。あなたができることは、リンクアノニマイザーを使用してリファラーを非表示にすることです。

于 2011-07-25T14:32:52.773 に答える