Http

在某些情況下,Referer 是從 HTTPS 傳遞到 HTTP 的……如何?

  • January 19, 2017

理論上,瀏覽器不會將引用資訊從 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 站點做同樣的事情?

看起來這是由於<meta>Google 正在使用的新標頭:

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

規範:https ://w3c.github.io/webappsec-referrer-policy/

目前只有少數瀏覽器完全支持它,所以它不是一個完整的解決方案,但肯定是一個開始!

這是標準行為。

https://www.rfc-editor.org/rfc/rfc2616#section-15.1.3

如果引用頁面是使用安全協議傳輸的,則客戶端不應在(非安全)HTTP 請求中包含Referer 頭欄位。

因此,如果您的客戶這樣做,則違反了標準。

再說一次,Google是標準,他們可以做任何他們想做的事情:-)

引用自:https://serverfault.com/questions/520244