Referrer Policy 介绍
当用户在浏览器上点击一个链接时,会产生一个 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
,仅对当前链接有效;a
、area
、link
、iframe
和img
还可以通过referrerpolicy
指定仅针对当前链接的设置。
参考
Referrer Policy
Referrer-Policy
浏览器的同源策略
原文地址:https://caixw.io/posts/2017/referrer-policy.html
转载于:https://blog.51cto.com/caixw/1957017
Referrer Policy 介绍相关推荐
- HTTP的Referrer和Referrer Policy介绍
本文链接:https://blog.csdn.net/dujie1219/article/details/111273925 Referrer referrer是HTTP请求header的报文头,用于 ...
- php referrer policy,Referrer Policy介绍
referer的写法是错的,正确的是referrer.大概是早期http规范的拼写错误,然后为了保持向下兼容,就将错就错了. 一.九种policy enum ReferrerPolicy { &quo ...
- Referrer和Referrer Policy介绍
1. Referrer referrer是HTTP请求header的报文头,用于指明当前流量的来源参考页面.通过这个信息,我们可以知道访客是怎么来到当前页面的.这对于网站分析(Web Analytic ...
- HTTP系列之Referer和Referrer policy简介
文章目录 1.前言摘要 2.Referer简介 3.Referer安全性 4.相关术语 5.Referrer Policy 5.1.no-referrer 5.2.no-referrer-when-d ...
- Referrer Policy: strict-origin-when-cross-origin 的解决办法
问题概述 关于这个问题,是在微信公众号的开发过程中遇到的, 在进行配置域名进行调用时,出现:" Referrer Policy: strict-origin-when-cross-origi ...
- Referer和Referrer Policy详解
最近换了个负责网络安全的leader,整个部门开始网络安全整顿,我们负责WEB的接到通知要求防御CSRF攻击,设置referer白名单.之前看过一点referer相关的,但是了解不够深入,趁这次机会好 ...
- HTTP的Referrer Policy
客户端通过设置Referrer Policy来控制是否在请求头中告知服务端请求来源.来源信息写在生成的请求头的referer中. 注意 Referer 实际上是单词 "referrer&qu ...
- Referrer Policy: strict-origin-when-cross-origin
浏览器:Referrer Policy: strict-origin-when-cross-origin 但是后端可以正常访问数据 解决方法 可能是nginx启动错误,在命令行窗口中关闭后重新启动ng ...
- css 添加 referer,http中Referer和Referrer Policy
一. referer是什么referer:引用页.HTTP请求头信息中,referer用于提供访问来源的信息,客户端发送请求的时候,自主决定是否加上该字段.服务器一般使用referer识别访问来源,可 ...
最新文章
- [zz]启动apache后访问系统,提示没有权限访问目录,报403错误。
- java安全编码指南之:表达式规则
- 多进程减少多个文件的内存占用
- 机器学习数据集的获取和测试集的构建方法
- 【C++的深度剖析教程21】类型转换函数下
- opencv threshold_基于深度学习OpenCV与python进行字符识别
- 【高并发】ThreadLocal、InheritableThreadLocal
- 一台机器上同时部署多个tomcat服务
- 《赢在中国》第二赛季108将进京
- 3.面试(3) --- 编程
- Uniapp 微信小程序登陆页面
- python拟合曲线_使用python通过点拟合曲线
- 网线传输速度测试_教你局域网中怎样对网线进行全面测试
- CAD VCL Multiplatform SDK 定制Crack
- P3456 [POI2007]GRZ-Ridges and Valleys(bfs)
- 【软件工程】软工视频总结
- 桥接的虚拟机无法ping通物理机
- Spring的UriComponents
- python中字母与ascii码的相互转换
- 计算机网络基础技术:数据通信技术基本概念
热门文章
- java并发多线程面试_Java多线程并发面试问答
- Android Material Components – MaterialAlertDialog
- ROS的学习(八)ROS的服务
- C++高级教程之多线程
- react-native开发安卓app相关使用总结
- Spark笔记整理(一):spark单机安装部署、分布式集群与HA安装部署+spark源码编译...
- mysqli得到记录数量
- android Broadcast广播消息代码实现
- 网站前端和后台性能优化的34条经验和方法
- AB=C型向量分解思路思考