web-dev-qa-db-ja.com

リファラーは、場合によってはHTTPSからHTTPに渡されます。

理論的には、ブラウザは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サイトまで同じようにするにはどうすればよいですか?

17
ravisorg

Googleが使用している新しい<meta>ヘッダーが原因のようです:

 <meta name="referrer" content="Origin">

仕様: https://w3c.github.io/webappsec-referrer-policy/

それは現在 いくつかのブラウザで完全にサポートされています なので、完全なソリューションではありませんが、確かに始まりです!

23
ravisorg

これは標準の動作です。

https://tools.ietf.org/html/rfc2616#section-15.1. は言う

参照ページがセキュアなプロトコルで転送された場合、クライアントは(非セキュアな)HTTPリクエストにリファラーヘッダーフィールドを含めないでください。

したがって、クライアントがそれを行っている場合、それは標準に違反しています。

もう一度、google IS標準であり、彼らは彼らがやりたいことを何でもできる:-)

4
johnshen64

これは、GoogleページのJavaScriptが実行しているもののようです。 noscriptを有効にしたFirefoxで表示されず、Chrome javascriptを無効にするとWindowsで表示されなくなります。それ以上掘り下げていないため、具体的にはわかりません。 。

1
Etan Reisner

<meta>ラベルの属性名に新しいリファラールールが追加されました。リファラーは、このドキュメントから送信されたリクエストに添付されたHTTPリファラーHTTPヘッダーのコンテンツを制御します。

詳細については、こちらを確認してください: RFCリファラーポリシー

0
leozhang2018