理論的には、ブラウザはHTTPSからHTTPサイトへの参照情報を渡しません。そして、私の経験では、これは常に真実でした。しかし、私は例外を見つけただけで、それが機能する理由を理解して、それを使用できるようにしたいと考えています。
https://www.google.ca/ で「リファラーとは」を検索します
例: https://www.google.ca/search?q=what+is+my+referer
リファラーを表示するサイトがいくつかあります。彼らはすべて彼らがすべきでないときに「働く」ようです。たとえば、www.whatismyreferer.comをクリックします。私は得ます:
Your referer:
https://www.google.ca/
時々、まれに、結果として「リファラーなし」が表示されることに注意してください。戻ってリンクをもう一度クリックすると、次回はリンクが機能します。
これは起こらないはずです。 www.whatismyreferer.comはHTTPS以外のサイトです。リファラーヘッダーは渡されるべきではありませんが、渡されます。
ここで何が起こっているのか、そして自分のHTTPSサイトからリンク先のHTTPサイトまで同じようにするにはどうすればよいですか?
Googleが使用している新しい<meta>
ヘッダーが原因のようです:
<meta name="referrer" content="Origin">
仕様: https://w3c.github.io/webappsec-referrer-policy/
それは現在 いくつかのブラウザで完全にサポートされています なので、完全なソリューションではありませんが、確かに始まりです!
これは標準の動作です。
https://tools.ietf.org/html/rfc2616#section-15.1. は言う
参照ページがセキュアなプロトコルで転送された場合、クライアントは(非セキュアな)HTTPリクエストにリファラーヘッダーフィールドを含めないでください。
したがって、クライアントがそれを行っている場合、それは標準に違反しています。
もう一度、google IS標準であり、彼らは彼らがやりたいことを何でもできる:-)
これは、GoogleページのJavaScriptが実行しているもののようです。 noscriptを有効にしたFirefoxで表示されず、Chrome javascriptを無効にするとWindowsで表示されなくなります。それ以上掘り下げていないため、具体的にはわかりません。 。
<meta>
ラベルの属性名に新しいリファラールールが追加されました。リファラーは、このドキュメントから送信されたリクエストに添付されたHTTPリファラーHTTPヘッダーのコンテンツを制御します。
詳細については、こちらを確認してください: RFCリファラーポリシー