2011-02-17 37 views
34

私は、アウトバウンドリンクがリファラーを送信して宛先サイトがどこから来たのかわからないようにするページがあります。リダイレクト先から宛先へのリンクを停止する

私はこれは不可能だと思っていますが、私はちょうどそれを行うことができ、いくつかの(ほとんどではないが)ブラウザで動作する隠されたjavascriptの魔法がないことを確認したい。

kung-fuをリダイレクトする巧妙なHTTPステータスコードですか?このような

何かが、私はちょうど同じことを探していた、そしてそれはthis will be a feature of HTML5ように思える

<a href="example.com" send_referrer="false">link</a> 

答えて

4

私もこれを理解しようとしていました。

私が考えた解決策は、実際のページが表示されないようにデータURLを使用することでした。

<a href='data:text/html;charset=utf-8, <html><script>window.location = "http://google.ca";</script></html>'>Link</a> 

このリンクは、別のページを読み込むためのjavascriptのみを含むページを開きます。 私のテストでは、参照先は最終的な宛先には与えられません。とにかく試してみたら、リファラーとして送ることができるものは分かりません。おそらくデータURLですか?それはあなたがどこから来たのか分からないでしょう。

これはChromeで動作します。 Chromeは私の現在の問題の唯一の懸念事項ですが、データURLであるページのjavascriptが嫌いなブラウザでは問題ありません。あなたはおそらくメタリフレッシュを試みることができます。

+0

作品はクロム。残念ながら、Firefoxではそうではありません。 – zaius

8

Bigmackは適切なトラックにありますが、javascriptの場所の変更は依然としてfirefoxで参照元を送信します。メタリフレッシュを使用すると、私の問題を解決するようです。

<a href='data:text/html;charset=utf-8, <html><meta http-equiv="refresh" content="0;URL=&#39;http://google.com/&#39;"></html>'>Link</a> 
+0

私はこれがgmailのリンクのためにgoogleがするものだと思います。リンクをクリックし、クリックした元のリンクへのメタリフレッシュを使って空のGoogleトラッキングページに移動します。 – wezell

25

HTML 5はsupported in all major browsersある、rel="noreferrer"を含んでいます。だから、これらのブラウザのために、あなたは、単に書くことができます。

<a href="example.com" rel="noreferrer">link</a> 

を他のブラウザで利用可能なシムもあります:https://github.com/knu/noreferrer

+4

このシムを上に向けると、廃止された$ .browserに依存します。 –

34

のようなリファラ破りのサービスを使用することができます2015年以降、適切な解決策が得られました。

HTTP Referrer Policy仕様では、あなたがコントロールすることができますリファラ、送信リンクサブリソース(イメージ、スクリプト、スタイルシートなど)と、現時点では、それは、Firefox、クローム、オペラのsupportedだため。

<meta name="referrer" content="no-referrer"> 

(そしてスペックの古いバージョンは、MicrosoftのエッジとSafariでサポートされていますが、私はまだ他のすべての新しい構文を供給しながら、彼らに古い構文を養うためにテストされ、作業方法を発見していません。あなたがaudioimglinkscript、およびCORSを必要とするリソースを参照videoタグにそれを適用する場合)

また、またこれだけ最低限それらにcrossorigin="anonymous"属性を設定することを忘れないでください( Originヘッダー)が共有されます。すでに情報に加え

(CORSを使用しながら、リモートサイトはそれを許可または拒否するために、要求を行っているもののドメインを知る必要があるため、あなたはOriginヘッダを取り除くことはできません。)

+0

注:Chromeはこのエラーを示します: '参照元ポリシーの設定に失敗しました:値 'none'は 'always'、 'default'、 'never'、 'no-referrer'、 'no-referrer-when-downgrade '、' origin '、' origin-when-crossorigin '、または' unsafe-url 'のいずれかです。このドキュメントのリファラーポリシーは変更されていません。 '記載されていない' vaue 'は間違っているようです。 –

+1

@TomPažourekありがとうございました。私はそれが古い構文だと思う。どのように私はそれを使用し終わったかわからない。 – ssokolow

+0

提案されたメタタグにリファラーを渡すブラウザはまだまだあります。リファラーをどのブラウザにも送信しないようにするより良い方法はありますか? 'noopener'の使用は助けになるでしょうか? – Alex

0

提供されます。ここでのトピックに関する詳細:https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer

同じ原点またはクロスオリジン要求に対して異なる規則が必要な場合は、特に参照情報を送信するか送信しないようにすることができます。

具体的なユースケースに応じて、考慮する必要があります。つまり、サードパーティのウェブサイトからimages/css/javascriptを取得している場合は、これを行っているURLを特定しないことができ、no referrerオプションを使用することができます。一方、自分のウェブサイトから他のウェブサイトにリンクしている場合は、トラフィックを送信していることを知りたいことがあります。常にこの両面での意味を考えてください。この2つの領域に競合がある場合は、URLの最後にUTMトラッキングパラメータを追加するなどのオプションがあります。これは一部の人にとって便利な機能です。詳細はこちら:https://www.contradodigital.com/2014/06/03/importance-utm-tracking-parameters-social-media/

関連する問題