Referrer Policy 介绍

2024-04-03 18:22:44

当用户在浏览器上点击一个链接时,会产生一个 HTTP 请求,用于获取新的页面内容,而在该请求的报头中,会包含一个 Referrer,用以指定该请求是从哪个页面跳转页来的,常被用于分析用户来源等信息。但是也有成为用户的一个不安全因素,比如有些网站直接将 sessionid 或是 token 放在地址栏里传递的,会原样不动地当作 Referrer 报头的内容传递给第三方网站。

所以就有了 Referrer Policy,用于过滤 Referrer 报头内容,目前是一个候选标准,不过已经有部分浏览器支持该标准。具体的可查看这里。

指令值

目前包含了以下几种指令值:

enum ReferrerPolicy {"",  "no-referrer",  "no-referrer-when-downgrade",  "same-origin",  "origin",  "strict-origin",  "origin-when-cross-origin",  "strict-origin-when-cross-origin",  "unsafe-url"};

空字符串

按照浏览器的默认值执行。默认值为 no-referrer-when-downgrade。部分标签可重定义此安全策略。

no-referrer

从字面意思就可以理解,不传递 Referrer 报头的值。

no-referrer-when-downgrade

当发生降级(比如从 https:// 跳转到 http:// )时,不传递 Referrer 报头。但是反过来的话不受影响。通常也会当作浏览器的默认安全策略。

原地址 跳转地址 Referrer
https://example.com?token=123 https://example.com/path https://example.com?token=123
http://example.com?token=123 http://example.com/path http://example.com?token=123
https//example.com http://example.com/path 无(协议降级)
http://example.com?token=123 https://example.com/path http://example.com?token=123

same-origin

同源,即当协议、域名和端口(如果有一方指定的话)都相同,才会传递 Referrer。

原地址 跳转地址 Referrer
https://example.com?token=123 https://example.com/path https://example.com?token=123
http://example.com?token=123 http://example.com/path http://example.com?token=123
https//example.com http://example.com/path 无(协议不同)
http://example.com?token=123 https://example.com/path 无(协议不同)
http://example.com?token=123 http://example.com:88/path 无(端口不同)
https://example.com?token=123 https://caixw.io 无(域名不同)

origin

将当前页面过滤掉参数及路径部分,仅将协议、域名和端口(如果有的话)当作 Referrer。

原地址 跳转地址 Referrer
https://example.com?token=123 https://example.com/path https://example.com
http://example.com?token=123 https://example.com/path http://example.com
https://example.com?token=123 https://caixw.io https://example.com

strict-origin

类似于 origin,但是不能降级。

原地址 跳转地址 Referrer
https://example.com?token=123 https://example.com/path https://example.com
http://example.com?token=123 https://example.com/path http://example.com
http://example.com?token=123 http://caixw.io http://example.com
https://example.com?token=123 http://caixw.io

origin-when-cross-origin

跨域时(协议、域名和端口只有一个不同)和 origin 模式相同,否则 Referrer 还是传递当前页的全路径。

原地址 跳转地址 Referrer
https://example.com?token=123 https://example.com/path https://example.com?token=123
http://example.com?token=123 https://example.com/path http://example.com?token=123
http://example.com?token=123 http://caixw.io http://example.com

strict-origin-when-cross-origin

与 origin-when-cross-origin 类似,但不能降级。

原地址 跳转地址 Referrer
https://example.com?token=123 https://example.com/path https://example.com?token=123
https://example.com?token=123 https://caixw.io https://example.com
https://example.com?token=123 http://example.com/path
https://example.com?token=123 http://example.com/

unsafe-url

任意情况下,都发送当前页的全部地址到 Referrer,最宽松和不安全的策略。

传递方式

Referrer-Policy 报头

推荐的方式,直接在 Referrer-Policy 报头中设置。

Referrer-Policy: origin;

Meta

通过指定 name 值为 referrer 的 meta 标签,也可以达到相同的效果:

<meta name="referrer" content="strict-origin" />

content 可以是上面的指定的值,也可以是下面这几种旧的指令值,会自动作相应的转换,但不推荐这些旧的指令值:

Legacy Referrer
never no-referrer
default no-referrer-when-downgrade
always unsafe-url
origin-when-crossorigin origin-when-cross-origin

标签属性

  • a 和 link 标签可以通过属性 rel 指定 noreferrer,仅对当前链接有效;

  • aarealinkiframe 和 img 还可以通过 referrerpolicy 指定仅针对当前链接的设置。

参考

Referrer Policy

Referrer-Policy

浏览器的同源策略

原文地址:https://caixw.io/posts/2017/referrer-policy.html

转载于:https://blog.51cto.com/caixw/1957017

Referrer Policy 介绍相关推荐

  1. HTTP的Referrer和Referrer Policy介绍

    本文链接:https://blog.csdn.net/dujie1219/article/details/111273925 Referrer referrer是HTTP请求header的报文头,用于 ...

  2. php referrer policy,Referrer Policy介绍

    referer的写法是错的,正确的是referrer.大概是早期http规范的拼写错误,然后为了保持向下兼容,就将错就错了. 一.九种policy enum ReferrerPolicy { &quo ...

  3. Referrer和Referrer Policy介绍

    1. Referrer referrer是HTTP请求header的报文头,用于指明当前流量的来源参考页面.通过这个信息,我们可以知道访客是怎么来到当前页面的.这对于网站分析(Web Analytic ...

  4. HTTP系列之Referer和Referrer policy简介

    文章目录 1.前言摘要 2.Referer简介 3.Referer安全性 4.相关术语 5.Referrer Policy 5.1.no-referrer 5.2.no-referrer-when-d ...

  5. Referrer Policy: strict-origin-when-cross-origin 的解决办法

    问题概述 关于这个问题,是在微信公众号的开发过程中遇到的, 在进行配置域名进行调用时,出现:" Referrer Policy: strict-origin-when-cross-origi ...

  6. Referer和Referrer Policy详解

    最近换了个负责网络安全的leader,整个部门开始网络安全整顿,我们负责WEB的接到通知要求防御CSRF攻击,设置referer白名单.之前看过一点referer相关的,但是了解不够深入,趁这次机会好 ...

  7. HTTP的Referrer Policy

    客户端通过设置Referrer Policy来控制是否在请求头中告知服务端请求来源.来源信息写在生成的请求头的referer中. 注意 Referer 实际上是单词 "referrer&qu ...

  8. Referrer Policy: strict-origin-when-cross-origin

    浏览器:Referrer Policy: strict-origin-when-cross-origin 但是后端可以正常访问数据 解决方法 可能是nginx启动错误,在命令行窗口中关闭后重新启动ng ...

  9. css 添加 referer,http中Referer和Referrer Policy

    一. referer是什么referer:引用页.HTTP请求头信息中,referer用于提供访问来源的信息,客户端发送请求的时候,自主决定是否加上该字段.服务器一般使用referer识别访问来源,可 ...

最新文章

  1. [zz]启动apache后访问系统,提示没有权限访问目录,报403错误。
  2. java安全编码指南之:表达式规则
  3. 多进程减少多个文件的内存占用
  4. 机器学习数据集的获取和测试集的构建方法
  5. 【C++的深度剖析教程21】类型转换函数下
  6. opencv threshold_基于深度学习OpenCV与python进行字符识别
  7. 【高并发】ThreadLocal、InheritableThreadLocal
  8. 一台机器上同时部署多个tomcat服务
  9. 《赢在中国》第二赛季108将进京
  10. 3.面试(3) --- 编程
  11. Uniapp 微信小程序登陆页面
  12. python拟合曲线_使用python通过点拟合曲线
  13. 网线传输速度测试_教你局域网中怎样对网线进行全面测试
  14. CAD VCL Multiplatform SDK 定制Crack
  15. P3456 [POI2007]GRZ-Ridges and Valleys(bfs)
  16. 【软件工程】软工视频总结
  17. 桥接的虚拟机无法ping通物理机
  18. Spring的UriComponents
  19. python中字母与ascii码的相互转换
  20. 计算机网络基础技术:数据通信技术基本概念

热门文章

  1. java并发多线程面试_Java多线程并发面试问答
  2. Android Material Components – MaterialAlertDialog
  3. ROS的学习(八)ROS的服务
  4. C++高级教程之多线程
  5. react-native开发安卓app相关使用总结
  6. Spark笔记整理(一):spark单机安装部署、分布式集群与HA安装部署+spark源码编译...
  7. mysqli得到记录数量
  8. android Broadcast广播消息代码实现
  9. 网站前端和后台性能优化的34条经验和方法
  10. AB=C型向量分解思路思考