いくつかのテストを行った後、httpsページからhttpページをクリックしても、ブラウザーはリファラーHTTPヘッダーを送信しないという結論に達し始めています。
それはどのようなセキュリティ上の理由ですか?規格のどこかに定義されていますか?
HTTP RFC の状態、セクション 15.1.3重要な情報をURIにエンコードする :
参照ページがセキュアプロトコルで転送された場合、クライアントは(非セキュア)HTTPリクエストにリファラーヘッダーフィールドを含めるべきではありません(SHOULDNOT)。
したがって、これは予想される/標準的な動作です。
これによると、実際にはもうそれほど単純ではありません(2014年以降) リファラーポリシーに関するw3cドキュメント 。
デフォルトの動作では、HTTPSからHTTPに移行するときに、ブラウザーはリファラー情報を送信しません。ただし、ブラウザはHTTPSからHTTPSに移行するときにリファラーを送信します。
また、HTML5には、referrerという名前の新しいメタタグがあります。これは次のようになります。
<meta name="referrer" content="Origin">
新しいブラウザはすでにこれを実装しています 。したがって、ブラウザがリファラーを送信するかどうかは、近い将来、このメタタグに依存します。このメタタグがページのHTMLに含まれていない場合、ブラウザはデフォルトの動作を使用します。
以下は、リファラーメタタグのコンテンツ属性の可能な値です。
また、リファラーメタタグにはいくつかのレガシー属性値があります。これらは推奨されなくなりましたが、現時点では多くのサイトで使用されています。
この情報が、2014年以降にこの投稿を見つけたばかりの人に役立つことを願っています。
はい、 標準 で定義されています:
参照ページがセキュアプロトコルで転送された場合、クライアントは(非セキュア)HTTPリクエストにリファラーヘッダーフィールドを含めるべきではありません
理由:SessionIDがURLエンコードされている場合があります。 HTTPページには、HTTPS通信からセッションを盗むクロスサイトスクリプティングを含めることができます。これを防ぐために、リファラーはHTTPSからHTTPへの移行で送信されないため、URLエンコードされたsessinIDが盗まれる可能性はありません。