HTTP杂谈之Referrer-Policy响应头

一   Referrer-Policy

回顾: Referer是表示请求是从'哪个网址'跳转过来的,请求的源站;一般在'图片'、或者'超链接'中

①  背景

现象: 

 1)请求流: client --> APIGATEWAY --> nginx --> 后端服务

 2)发现在'给客户端的响应中',也即'浏览器'中有'Referrer-Policy'响应头,'不符合'预期的

 3)排查: 'Referrer-Policy'是在哪里引入的? 
  
 4)临时解决: 在nginx中'增加'proxy_hide_header Referrer-Policy '隐藏'上游的响应头

②  Referrer-Policy解读

 

1) Referrer-Policy  是一个 '响应头'

2) 作用:控制'请求头'中的'Referer'的内容

3) 现状:目前是w3c官方剔出的一个'候选标准',不过有'部分浏览器'支持该标准,不是一个'通用头'

4) 通俗:规范Referer,规定'什么时候发送Referer 请求头'字段? 以及'发送哪些信息'?

③  语法

HTTP杂谈之Referrer-Policy响应头_第1张图片

④  Referrer-Policy 各个值的解读

HTTP杂谈之Referrer-Policy响应头_第2张图片 

 

HTTP杂谈之Referrer-Policy响应头_第3张图片 

 

 

HTTP杂谈之Referrer-Policy响应头_第4张图片 

HTTP杂谈之Referrer-Policy响应头_第5张图片 

⑤  为什么要严格控制Referer

1) Referer 参数其实就告诉了'链接的请求'来源于'哪个'网站

  场景: 所以可以根据这个特性,'限制一些接口'只能'特定网站'的才能调,外部网站不能调。

2) 这个参数常常是跟'同源策略'和'跨域请求'关联在一起

 场景: 

  [1]、因为现在普遍都是'前后端分离'项目

  [2]、前端页面的地址和后端 api 接口地址是'跨域'的

  [3]、为了让'后台接口'判断是不是合法请求

  [4]、除了前端在请求头中'加上Authorization字段',后台也可通过'Referer'字段判断请求来源

3) 另外,在 'CSRF 攻击的防范'中

 场景:除了 SameSite Cookie,CSRF token 等方法,Referer 字段判断请求来源也是一种防范手段

⑥  Referrer-Policy 使用方法

1)HTML中集成

HTTP杂谈之Referrer-Policy响应头_第6张图片

2)CSS中集成

HTTP杂谈之Referrer-Policy响应头_第7张图片

3)JS中集成

⑦  未经验证的浏览器解析顺序

Referrer-Policy是有一个'优先级顺序'的:

  1)Element-level policy

  2)Page-level policy

  3)Browser default

解读: 

  1)元素级别的策略优先级最高,页面级别的次之,浏览器'默认值'最低

  2)所以,可以先设置一个较'严格的页面级'策略再对'某些资源'做渐进'增强'

⑧  fallback p[olicy

HTTP杂谈之Referrer-Policy响应头_第8张图片

⑨  Firefox浏览器设置

HTTP杂谈之Referrer-Policy响应头_第9张图片

⑩  浏览器兼容性

HTTP杂谈之Referrer-Policy响应头_第10张图片

你可能感兴趣的:(服务器,运维)