HTTP Referer

来源:https://www.cnblogs.com/Shellcoochi/archive/2019/10/24/11735327.html
-Advertisement-
Play Games

什麼是Referer? Referer是HTTP請求頭信息裡面的一個常見欄位,它提供了訪問來源的信息。比如說,在某網站上看到一個廣告並點了進去,那麼我就可能會在HTTP 協議在請求(request)的頭信息裡面看到Referer這一欄位給出“引薦網頁”的URL,讓人知道我們是通過“某網站”進入的這個 ...


什麼是Referer?

Referer是HTTP請求頭信息裡面的一個常見欄位,它提供了訪問來源的信息。比如說,在某網站上看到一個廣告並點了進去,那麼我就可能會在HTTP 協議在請求(request)的頭信息裡面看到Referer這一欄位給出“引薦網頁”的URL,讓人知道我們是通過“某網站”進入的這個廣告頁。

Referer存在的條件

在瀏覽器向伺服器請求資源的時候,Referer欄位並不是總是存在的,其中在以下幾種情況中會發送Referer欄位

1.點擊網頁上的連接

2.提交表單(post或get)

3.網頁載入靜態資源,比如載入圖片、腳本、樣式(js的script標簽及html中img標簽的src屬性)。

以下是幾種獲取不到Referer的幾種情況

1.直接在瀏覽器內輸入URL

2.通過瀏覽器內的書簽或收藏

3.第三方軟體內容中的連接(如Word,Excel等)

4.從HTTPS的網站跳轉到HTTP的網站或SSL認證網站跳入

那麼Referer有什麼作用呢?

1.通過Referer我們可以知道訪問來源的信息,所以可以用來做一些網站流量的來路統計

2.防止圖片盜鏈,當我們不希望自家網站圖片外鏈被其他網站載入時,就可以基於Referer欄位來實現,可以通過判斷該欄位是否是自家URL或者是屬於白名單里的URL如果是則放行允許載入。

3.在某些情境下我們不希望暴露當前的原始網址,比如一個社交網站會有每個用戶的簡介頁面,用戶會在他們的個人主頁中添加一些鏈接。社交網站可能不希望泄露用戶的個人主頁URL給被鏈接的網站(因為個人主頁URL可能會泄露其主人的身份信息)。
一些社交網站可能想通知其他網站該鏈接是從社交網站發起的,但不想泄露包含用戶信息的鏈接(例如,微博中的鏈接希望告訴對方該鏈接是在微博中連接過來的,但不希望告訴對方從誰的微博連接過來)。

referrer策略

Referrer策略包含以下值:

  1. 空字元串:空字元串表示沒有referrer策略,預設為no-referrer-when-downgrade。
  2. no-referrer:最簡單的策略是“no-referrer”,表示所有的請求都不帶referrer。
  3. no-referrer-when-downgrade:主要針對於受TLS保護的URL(如https),簡單的說就是https的頁面中,當連接的資源也是https的,則發送完整的referrer,如果連接的資源是http的,就不發送referrer
  4. same-origin:對於同源的鏈接,會發送referrer,其他的不會。
  5. origin:這個策略對於任何資源來說只發送源的信息,不發送完整的url。
  6. strict-origin:這個策略類似於origin和no-referrer-when-downgrade的合體,如果一個https頁面中鏈接到http的頁面或資源,則不會發送referrer。http頁面鏈接以及https鏈接到https都只發送來源頁面的源信息。
  7. origin-when-cross-origin:該策略在同源的鏈接中發送完整的URL,其他情況僅發送源信息。相同的功能變數名稱,http和https協議被認為是非同源的。
  8. strict-origin-when-cross-origin:對於同源請求,發送完整的URL;對於同為https的,只發送源信息;對於http頁面只發送源信息;https頁面中的http請求不發送referrer。
  9. unsafe-url:這個主要是解決https頁面中的http資源不發referrer的問題,它會使在https頁面中http資源發送完整的referrer。

Referrer策略可以通過以下方法聲明:
1.通過http請求頭中的Referrer-Policy欄位,例:Referrer-Policy: no-referrer
2.通過meta標簽,name為referrer,例:<meta name=”referrer” content=”no-referrer” />
3.通過<a>、<area>、<img>、<iframe>、<link>元素的referrerpolicy屬性。例:<a href=“http://example.com” referrerpolicy=“origin”>
4.通過<a>、<area><link>元素的rel=noreferrer屬性,例:<a href='http://example.com' rel="noreferrer" target="_blank">test</a>
5.通過隱式繼承

註意事項
Referrer策略還有其他歷史遺留的值:
1.never等價於no-referrer
2.default等價於no-referrer-when-downgrade
3.always等價於unsafe-url
4.不建議使用上面三個值,建議使用後面的新值

相容性
IE:不支持(IE高版本中隱式支持default,https頁面拉取的http資源不會加referrer)
Edge:僅支持較早版本的值(never、always、origin、default)
Firefox:36+
Chrome:21+
Safari:7.1+(僅支持較早版本的4個值)
Opera:15+
iOS Safari:8+(僅支持較早版本的4個值)

參考:

http://www.ruanyifeng.com/blog/2019/06/http-referer.html

https://blog.lyz810.com/article/2016/08/referrer-policy-and-anti-leech/

https://blog.csdn.net/fjb2080/article/details/80975115


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 插件被用來封裝構建邏輯和一些通用配置。將可重覆使用的構建邏輯和預設約定封裝到插件里,以便於其他項目使用。 你可以使用你喜歡的語言開發插件,但是最終是要編譯成位元組碼在 JVM 運行的。 Gradle 有兩種插件,腳本插件和二進位插件。 ...
  • MetriKit是iOS 13中用於收集和處理電池和性能指標的新框架。這是在WWDC今年與XCTestMetrics和Xcode Metrics組織者一起,作為一項協調一致的努力的一部分,為開發人員帶來關於他們的應用程式在該領域的表現的新見解。 蘋果會自動從AppStore上安裝的應用程式中收集度量 ...
  • More than one file was found with OS independent path 'xxx/xxx' 這個錯誤是在路徑中出現了重覆依賴。 解決辦法是配置打包選項, 在 android 節點下配置 ...
  • 適用場景:動態配置的背景圖片 不推薦:使用bitmap,頻繁操作的話比較耗性能。 3、使用高斯模糊遮罩,可以對指定區域進行模糊,不需要處理單張圖片(推薦!!) 推薦一個github上的項目,親測有效。https://github.com/mmin18/RealtimeBlurView <com.gi ...
  • 1、在Podfile中加入添加庫名 pod 'BaiduMapKit' #百度地圖SDK 2、安裝百度地圖 pod install 出現問題: [!] Error installing BaiduMapKit [!] /usr/local/bin/git clone https://github.c ...
  • 一、什麼網頁的佈局方式? 網頁的佈局方式其實就是指瀏覽器是如何對網頁的元素進行排版的 二、標準流排版方式(又稱為文檔流、普通流) 1.含義 其實瀏覽器預設的排版方式就是標準流排版方式 2.在CSS中將元素分為三類:塊級元素(獨占一行,可以是設置寬高)、行內元素(不獨占一行不能設置寬高),行內塊級元素 ...
  • 1. 安裝組件和插件 cnpm i element-ui -S // 安裝elementcnpm i vue-i18n -S //安裝i18n 2.將國際化資源放在assets目錄下 3.在src下新建i18n目錄,創建一個 index.js;路徑src\i18n\index.js 4.在main. ...
  • 常見的css樣式 color 文字顏色 background-color 背景顏色 opacity 設置透明度 顏色: 光的三原色: 紅 綠 藍 三種顏色表示法: 名詞表示法: red green blue 16進位顏色表示法: #000000 十六進位 0 f # ff(紅色) 00(綠色) 00 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...