Http
在某些情況下,Referer 是從 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 站點做同樣的事情?
看起來這是由於
<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是標準,他們可以做任何他們想做的事情:-)