在接入微信h5支付遇到了referrer爲空的問題以後,也看過不少博主整理的相關文檔,而後仍是本身簡單整理一下,加深一下理解。html
Referer 首部包含了當前請求頁面的來源頁面的地址,即表示當前頁面是經過此來源頁面裏的連接進入的。服務端通常使用 Referer 首部識別訪問來源,可能會以此進行統計分析、日誌記錄以及緩存優化等chrome
在一個不火熱的旅遊景點(很優美沒有過分開發的那種)開了個客棧,有一個很無聊的老闆,當有遊客入住的時候,都會問 場景一:瀏覽器
場景二:緩存
referrer 是否發送,在chrome默認的行爲裏面是會帶的(除了是新標籤直接訪問頁面),這樣會帶來一個問題安全
<img src="data:" />
配置 referrer-polictybash
屬性值 | 描述 |
---|---|
no-referrer | 不發送referrer |
no-referrer-when-downgrage | 安全等級降級的時候不發,例如https->http |
origin | 只發送「源」 |
origin-when-cross-origin | 非同源只發送「源」,同源訪問發送具體的url |
same-origin | 同源訪問發送具體url |
strict-origin | 同等安全等級的頁面訪問才發url |
strict-origin-when-cross-origin | 同等安全等級且同源的狀況下才發送url |
unsafe-url | 不管是同源請求仍是非同源請求都發送完整的url |
配置的地方微信
例如:
<a href=「xxx.com」 referrerpolicy=「origin」 />
或者
<a href=「xxx.com」 rel=「noreferrer」 /> 這個時候跳轉後,頁面http裏面的信息的referer就爲空
複製代碼
<meta name=「referrer」 conent=「origin」 /> 這個時候,referer只會顯示origin
複製代碼
1.匿名優化
有時候匿名者不但願被知道本身的身份,會主動從http報文中刪除ua,ip,referer來保證私密性跟匿名性,網站
2.根據referer去作對應的處理url
3.防護 CSRF(跨站請求僞造)
注意:看到上面其實有referer,也有referrer,referer 是錯誤的寫法,正確的寫法是referrer。http header 裏面仍是referer屬性,沒有修正。其餘的才修正了寫法。