最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

HTTP Referer詳解及Referer控制

 更新時(shí)間:2018年04月09日 15:29:21   投稿:wdc  
HTTP Referer是header的一部分,當(dāng)瀏覽器向web服務(wù)器發(fā)送請(qǐng)求的時(shí)候,一般會(huì)帶上Referer,告訴服務(wù)器我是從哪個(gè)頁(yè)面鏈接過(guò)來(lái)的

什么是HTTP Referer

referer的意思簡(jiǎn)言之,HTTP Referer是header的一部分,當(dāng)瀏覽器向web服務(wù)器發(fā)送請(qǐng)求的時(shí)候,一般會(huì)帶上Referer,告訴服務(wù)器我是從哪個(gè)頁(yè)面鏈接過(guò)來(lái)的,服務(wù)器籍此可以獲得一些信息用于處理。

比如在一個(gè)網(wǎng)頁(yè)里面插入一個(gè)超鏈接,鏈接到其他的網(wǎng)頁(yè),那么當(dāng)點(diǎn)擊這個(gè)超鏈接從而鏈接到另外一個(gè)頁(yè)面的時(shí)候,相當(dāng)于瀏覽器向 web 服務(wù)器發(fā)送了一個(gè) http 請(qǐng)求,對(duì)于另外一個(gè)頁(yè)面而言,這個(gè) referer 就是上一個(gè)頁(yè)面的 URL,而對(duì)于從地址欄里面直接輸入 URL 或者是刷新網(wǎng)頁(yè)的方式,則 referer = null,通過(guò)設(shè)置這個(gè) referer 可以防止盜鏈的問(wèn)題

例如從我主頁(yè)上鏈接到一個(gè)朋友那里,他的服務(wù)器就能夠從HTTP Referer中統(tǒng)計(jì)出每天有多少用戶點(diǎn)擊我主頁(yè)上的鏈接訪問(wèn)他的網(wǎng)站。

Referer其實(shí)應(yīng)該是英文單詞Referrer,不過(guò)拼錯(cuò)的人太多了,所以編寫(xiě)標(biāo)準(zhǔn)的人也就將錯(cuò)就錯(cuò)了。

Referer有時(shí)也被用作防盜鏈

即下載時(shí)判斷來(lái)源地址是不是在網(wǎng)站域名之內(nèi), 否則就不能下載或顯示,很多網(wǎng)站,如天涯就是通過(guò)Referer頁(yè)面來(lái)判斷用戶是否能夠下載圖片.

當(dāng)然,對(duì)于某些惡意用戶,也可能偽造Referer來(lái)獲得某些權(quán)限,在設(shè)計(jì)網(wǎng)站時(shí)要考慮到這個(gè)問(wèn)題.

還可用做電子商務(wù)網(wǎng)站的安全,在提交信用卡等重要信息的頁(yè)面用referer來(lái)判斷上一頁(yè)是不是自己的網(wǎng)站,如果不是,可能是黑客用自己寫(xiě)的一個(gè)表單,來(lái)提交,為了能跳過(guò)你上一頁(yè)里的javascript的驗(yàn)證等目的。

但是注意不要把Rerferer用在身份驗(yàn)證或者其他非常重要的檢查上,因?yàn)镽erferer非常容易在客戶端被改變

雖然Referer并不可靠,但用來(lái)防止圖片盜鏈還是足夠的,畢竟不是每個(gè)人都會(huì)修改客戶端的配置。實(shí)現(xiàn)一般都是通過(guò)apache的配置文件,首先設(shè)置允許訪問(wèn)的地址:

# 只允許來(lái)自domain.com的訪問(wèn),圖片可能就放置在domain.com網(wǎng)站的頁(yè)面上
SetEnvIfNoCase Referer “^http://www.domain.com/” local_ref
# 直接通過(guò)地址訪問(wèn)
SetEnvIf Referer “^$” local_ref

然后再規(guī)定被標(biāo)記了的訪問(wèn)才被允許:

<FilesMatch “.(gif|jpg)”>
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>

或者

<Directory /web/images>
Order Deny,Allow
Deny from all
Allow from env=local_ref
</Directory>

哪些情況下無(wú)法獲得上一頁(yè)referrer信息

直接在瀏覽器地址欄中輸入地址;

使用location.reload()刷新(location.href或者location.replace()刷新有信息);

在微信對(duì)話框中,點(diǎn)擊鏈接進(jìn)入微信自身的瀏覽器;

掃碼進(jìn)入QQ或者微信的瀏覽器;

直接新窗口打開(kāi)一個(gè)頁(yè)面; 2017.8.3更新 新版本Chrome測(cè)試,新窗口頁(yè)面依然有document.referrer

從https的網(wǎng)站直接進(jìn)入一個(gè)http協(xié)議的網(wǎng)站(Chrome下親測(cè));

a標(biāo)簽設(shè)置rel="noreferrer"(兼容IE7+);

meta標(biāo)簽來(lái)控制不讓瀏覽器發(fā)送referer;

例如:

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

使用 Referer Meta 標(biāo)簽控制 referer

使用場(chǎng)景

在某些情況下,出于一些原因,網(wǎng)站想要控制頁(yè)面發(fā)送給 server 的 referer 信息的情況下,可以使用這一 referer metadata 參數(shù)。

隱私

社交網(wǎng)站一般都會(huì)有用戶個(gè)人頁(yè)面,這些頁(yè)面中用戶都有可能添加一些外網(wǎng)的鏈接,而社交網(wǎng)站有可能不希望在用戶點(diǎn)擊了這些鏈接的時(shí)候,泄露用戶頁(yè)面的 URL ,因?yàn)檫@些 URL 中可能包含一些敏感信息。當(dāng)然,有些社交網(wǎng)站可能只想在 referer 中提供一個(gè) hostname,而不是完整的 URL 信息。

安全

有些使用了 https 的網(wǎng)站,可能在 URL 中使用一個(gè)參數(shù)(sid 等)來(lái)作為用戶身份憑證,而又需要引入其他 https 網(wǎng)站的資源,這種情況下,網(wǎng)站肯定不希望泄露用戶的身份憑證信息。

Object-Capability Discipline

有些網(wǎng)站遵循Object-Capability Discipline,而 referer 剛好與這一策略相悖,所以,網(wǎng)站能夠控制 refeer 將對(duì) Object-Capability Discipline 很有利。

技術(shù)細(xì)節(jié)

referer 的 metedata 參數(shù)可以設(shè)置為以下幾種類型的值:

never
always
origin
default

如果在文檔中插入 meta 標(biāo)簽,并且 name 屬性的值為 referer,瀏覽器客戶端將按照如下步驟處理這個(gè)標(biāo)簽:

1.如果 meta 標(biāo)簽中沒(méi)有 content 屬性,則終止下面所有操作

2.將 content 的值復(fù)制給 referrer-policy ,并轉(zhuǎn)換為小寫(xiě)

3.檢查 content 的值是否為上面 list 中的一個(gè),如果不是,則將值置為 default

上述步驟之后,瀏覽器后續(xù)發(fā)起 http 請(qǐng)求的時(shí)候,會(huì)按照 content 的值,做出如下反應(yīng)(下面 referer-policy 的值即 meta 標(biāo)簽中 content 的值):

1.如果 referer-policy 的值為never:刪除 http head 中的 referer;

2.如果 referer-policy 的值為default:如果當(dāng)前頁(yè)面使用的是 https 協(xié)議,而正要加載的資源使用的是普通的 http 協(xié)議,則將 http header 中的 referer 置為空;

3.如果 referer-policy 的值為 origin:只發(fā)送 origin 部分;

4.如果 referer-policy 的值為 always:不改變http header 中的 referer 的值,注意:這種情況下,如果當(dāng)前頁(yè)面使用了 https 協(xié)議,而要加載的資源使用的是 http 協(xié)議,加載資源的請(qǐng)求頭中也會(huì)攜帶 referer。

例子

如果頁(yè)面中包含了如下 meta 標(biāo)簽,所有從當(dāng)前頁(yè)面中發(fā)起的請(qǐng)求將不會(huì)攜帶 referer:

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

如果頁(yè)面中包含了如下 meta 標(biāo)簽,則從當(dāng)前頁(yè)面中發(fā)起的 http請(qǐng)求將只攜帶 origin 部分(注:根據(jù)原文中的語(yǔ)境,我理解這里的 origin 是包含了 schema 和 hostname 的部分 url,不包含 path 等后面的其他 url 部分),而不是完整的 URL :

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

注意:在使用本文中所述的 meta 標(biāo)簽的時(shí)候,瀏覽器原有的 referer 策略將被打破,比如從 http 協(xié)議的頁(yè)面跳轉(zhuǎn)到 https 的頁(yè)面的時(shí)候,如果設(shè)置了適當(dāng)?shù)闹?,也?huì)攜帶 referer。

其他問(wèn)題

這與 rel=noreferer 有什么關(guān)系呢?可能 rel=noreferer 會(huì)覆蓋掉本文中的 meta 標(biāo)簽所設(shè)置的值。也就是功能覆蓋。
origin 信息不是一個(gè)完整的 url,所以瀏覽器客戶端估計(jì)會(huì)在 origin 后面加一個(gè) / 來(lái)作為 path 部分。
如果 origin 是唯一的,會(huì)發(fā)生什么情況呢?估計(jì) referer 會(huì)被忽略。

相關(guān)文章

  • git驗(yàn)證線上的版本是否符合預(yù)期

    git驗(yàn)證線上的版本是否符合預(yù)期

    當(dāng)我們想知道部署項(xiàng)目的哪個(gè)版本有問(wèn)題?當(dāng)我們想知道線上運(yùn)行的版本是否是我們預(yù)期的版本?當(dāng)我們想把部署的版本與代碼進(jìn)行關(guān)聯(lián)?如果是你用git來(lái)做版本管理,那就可以使用git-commit-id-maven-plugin插件來(lái)實(shí)現(xiàn)上述功能
    2022-07-07
  • Git 常用命令清單(整理且詳細(xì))

    Git 常用命令清單(整理且詳細(xì))

    git我每天幾乎都在使用,但是很多命令還是記不住,下面小編給大家分享了Git 常用命令清單,感興趣的朋友一起看看吧
    2017-10-10
  • 大型網(wǎng)站架構(gòu)演變和知識(shí)體系

    大型網(wǎng)站架構(gòu)演變和知識(shí)體系

    之前也有一些介紹大型網(wǎng)站架構(gòu)演變的文章,例如LiveJournal的、ebay的,都是非常值得參考的,不過(guò)感覺(jué)他們講的更多的是每次演變的結(jié)果,而沒(méi)有很詳細(xì)的講為什么需要做這樣的演變
    2009-01-01
  • 解決Unable to access ''https://gitee.com/自己的項(xiàng)目/'': Could not resolve host: gitee.com問(wèn)題

    解決Unable to access ''https://gitee.com/自己的項(xiàng)目/'': Could not r

    這篇文章主要介紹了解決Unable to access 'https://gitee.com/自己的項(xiàng)目/': Could not resolve host: gitee.com問(wèn)題,需要的朋友可以參考下
    2020-09-09
  • 分享幾道和「滑動(dòng)窗口」有關(guān)的算法面試題

    分享幾道和「滑動(dòng)窗口」有關(guān)的算法面試題

    本文是小編和大家分享的幾道和「滑動(dòng)窗口」有關(guān)的算法面試題,需要的朋友可以參考下
    2019-08-08
  • git與svn的區(qū)別及優(yōu)缺點(diǎn)說(shuō)明

    git與svn的區(qū)別及優(yōu)缺點(diǎn)說(shuō)明

    Git和SVN都是版本控制系統(tǒng),用于代碼管理,SVN是集中式的,需要聯(lián)網(wǎng)并且中央服務(wù)器存在單點(diǎn)故障的風(fēng)險(xiǎn),Git是分布式的,每個(gè)終端都是一個(gè)完整的倉(cāng)庫(kù),不依賴中央服務(wù)器,提高了工作的靈活性和安全性,SVN易于管理權(quán)限,但必須聯(lián)網(wǎng)工作且更新提交可能面臨沖突
    2024-10-10
  • Vertica集成Apache Hudi重磅使用指南

    Vertica集成Apache Hudi重磅使用指南

    這篇文章主要為大家介紹了Vertica集成Apache Hudi的重磅使用指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-03-03
  • Jenkins集成Gitlab實(shí)現(xiàn)自動(dòng)化部署的全過(guò)程記錄

    Jenkins集成Gitlab實(shí)現(xiàn)自動(dòng)化部署的全過(guò)程記錄

    因?yàn)橹行凸静豢赡芘渲眠\(yùn)維開(kāi)發(fā),而開(kāi)發(fā)只管開(kāi)發(fā)的,所以運(yùn)維只能是通過(guò)使用開(kāi)源工具的方式來(lái)搭建自動(dòng)化部署系統(tǒng),下面這篇文章主要給大家介紹了關(guān)于Jenkins集成Gitlab實(shí)現(xiàn)自動(dòng)化部署的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • VSCode 云同步擴(kuò)展設(shè)置Settings Sync插件

    VSCode 云同步擴(kuò)展設(shè)置Settings Sync插件

    這篇文章主要介紹了VSCode 云同步擴(kuò)展設(shè)置Settings Sync插件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Git 教程之遠(yuǎn)程倉(cāng)庫(kù)詳解

    Git 教程之遠(yuǎn)程倉(cāng)庫(kù)詳解

    本文主要介紹Git 遠(yuǎn)程倉(cāng)庫(kù)的知識(shí),這里整理了相關(guān)資料,及命令詳解,圖文并茂的介紹該部分內(nèi)容,有需要的小伙伴可以參考下
    2016-09-09

最新評(píng)論

桑日县| 蕲春县| 葫芦岛市| 天津市| 哈尔滨市| 永新县| 团风县| 柏乡县| 连云港市| 红原县| 康乐县| 息烽县| 大方县| 汝城县| 上饶县| 隆化县| 昌都县| 蒙山县| 古丈县| 勃利县| 象山县| 台北市| 通渭县| 广饶县| 二手房| 西峡县| 藁城市| 大邑县| 微山县| 兴和县| 博白县| 左权县| 遂宁市| 大港区| 桓台县| 毕节市| 平遥县| 上饶市| 都江堰市| 东阿县| 安康市|