国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

Referer丟失的示例分析

發(fā)布時(shí)間:2021-09-04 11:55 來(lái)源:億速云 閱讀:0 作者:小新 欄目: 開(kāi)發(fā)技術(shù)

這篇文章主要介紹Referer丟失的示例分析,文中介紹的非常詳細,具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

Referer 是什么

HTTP Referer是 HTTP 請求 header 頭信息的一部分 當瀏覽器向web發(fā)送請求的時(shí)候,一般會(huì )帶上Referer

告訴服務(wù)器我是從哪個(gè)頁(yè)面鏈接過(guò)來(lái)的,服務(wù)器藉此可以獲得一些信息用于處理。

比如我們在 Chrome 瀏覽器的控制臺下 可以看到 Request Headers 下有類(lèi)似如下的信息

Provisional headers are shown
Accept: 
/
Origin: local.test5.show
Referer: local.test5.show/test/show
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36

其中 Referer 就是該屬性了

Referer 的正確英語(yǔ)拼法是 referrer。由于早期 HTTP 規范的拼寫(xiě)錯誤,為了保持向后兼容就將錯就錯了

Referer 的作用

防盜鏈

比如你發(fā)現訪(fǎng)問(wèn)加載自己的資源 而 referer不是自己的站點(diǎn) 就可以屏蔽它

防止惡意請求

這點(diǎn)同上

高級用法

比如微信H5支付 也需要這個(gè) 就不知道他們做啥用了(hhh

Referer 丟失

關(guān)于 Referer 丟失的問(wèn)題 首先 referer 是由客戶(hù)端的瀏覽器發(fā)送到服務(wù)器上,且在客戶(hù)端可以通過(guò) document.referrer 來(lái)獲取,也就是說(shuō)referer的發(fā)送實(shí)際上是一個(gè)瀏覽器行為,發(fā)送與否的決定權是在瀏覽器手里。雖然這樣說(shuō),但是HTTP協(xié)議對什么情況下,瀏覽器該發(fā)送,什么情況下不該發(fā)送有著(zhù)嚴格的規定。

總結下 Referer 丟失的幾種情況

1.當網(wǎng)站使用refresh字段進(jìn)行跳轉的時(shí)候,大多數瀏覽器不發(fā)送referer

2.從用戶(hù)從一個(gè)HTTPS的網(wǎng)站點(diǎn)擊鏈接到另一個(gè)HTTP的網(wǎng)站時(shí),不發(fā)送referer

3.html5中,a標簽的rel = “noreferrer”, 可以讓瀏覽器不發(fā)送referer

4.使用Data URI scheme鏈接的,瀏覽器也不發(fā)送referer

5.使用Content Security Policy, 也可以讓瀏覽器不發(fā)送referer

6.在html頭部中使用meta標簽來(lái)控制不讓瀏覽器發(fā)送referer

自動(dòng)生成URL鏈接HTTPS變HTTP

有時(shí)候需要在A(yíng)PI項目中生成一些URL鏈接返回 但是服務(wù)器端已經(jīng)配置了支持HTTPS,通過(guò)HTTPS訪(fǎng)問(wèn)的時(shí)候生成的URL仍然是HTTP

關(guān)于這個(gè)問(wèn)題其實(shí)是服務(wù)器 配置 問(wèn)題 和 下面類(lèi)似

回到我遇到的微信支付問(wèn)題 跟蹤了一圈瀏覽器的跳轉之后發(fā)現是屬性第二種情況 從 HTTPS 站點(diǎn)跳到 HTTP 站點(diǎn) 丟失了 Referer【ps:反過(guò)來(lái)從HTTP到HTTPS是沒(méi)問(wèn)題的 不會(huì )丟失 Referer】 中間藏的比較深

當然我一開(kāi)始沒(méi)有發(fā)現這個(gè)問(wèn)題 因為從前端請求到 API 整個(gè)都沒(méi)有問(wèn)題 全部項目已經(jīng)全線(xiàn)部署了 HTTPS , Referer 信息也有攜帶 然后到最后一步微信的支付請求URL的時(shí)候 Referer 就丟失了.

后面發(fā)現在請求到API項目的時(shí)候 API項目返回了一個(gè) URL 給前端 這個(gè) URL 是后端代碼根據規則生成的(Laravel 里的 action 輔助函數) 這個(gè)函數本身并沒(méi)有什么問(wèn)題 但是生成的URL鏈接 是 HTTP 了 又搞事情?。?!

API項目配置的是 HTTPS 請求 但是生成的URL是 HTTP 問(wèn)題就是這里了 請求運維哥協(xié)助 最后發(fā)現是 Nginx 反向代理中配置的問(wèn)題

nginx服務(wù)器配置片段如下:

location / {
    proxy_pass http://114.114.114.114:80;
  }

可以看到 proxy_pass 參數 指向的是 HTTP的協(xié)議 所以在 后臺獲取的 URL 都是HTTP協(xié)議的

把代理這設置成 https://114.114.114.114:443; 即可 問(wèn)題終解決

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。

日韩丰满少妇无吗视频激情内射| 欧美XXXXX高潮喷水| 久久精品无码一区二区无码| 国产精品一区在线观看你懂的| 欧美另类人妻制服丝袜| 国产一区二区三精品久久久无广告|