浅析HTTP请求中的referrer和Referrer-Policy

article/2025/10/9 2:04:01

本文将介绍一个涉及安全和隐私的http请求头中的字段—referrer,以及如何通过Referrer Policy去修改referrer的值或者是显示与否。

什么是referrer


当一个用户点击当前页面中的一个链接,然后跳转到目标页面时,目标页面会收到一个信息,即用户是从哪个源链接跳转过来的。如下图所示:

898bf45aac9b2a58bd5621709f865839.png

也就是说,当你发起一个http请求,请求头中的referrer字段就说明了你是从哪个页面发起该请求的。

使用场景

有时候我们需要控制这个referrer字段的值,即是否让其显示在请求头中,或者是否显示完整路径等。尤其是在以下两个使用场景:

隐私

在社交网站的个人中心页面,也许会存在一些外链,这时候社交网站肯定不希望用户在点击这些链接跳转到其他第三方网站时会将自己个人中心的URL信息显示在referrer字段中传过去,尤其是个人中心页面的URL往往会带着用户数据和一些敏感信息。这时候可以选择不显示来源页面URL信息或者只显示一个网站根地址hostname。

安全

有些使用了https的网站,可能在URL中使用一个参数(sid)来作为用户身份凭证,而又需要引入其他https网站的资源,这种情况,网站肯定不希望泄露用户的身份凭证信息。当https网站需要引入不安全的http网站的资源或者有链接要跳转到http网站时,这时候将https源网站的URL信息传过去也是不太安全的。

当然还有其他情况下需要referrer的值,比如最近公司所做的项目中,有一个请求由于请求头过大导致响应是400,我们的Referrer Policy是默认的情况,显示的referrer是完整的URL信息,该URL带了很多敏感数据比如加密后的token,sessionID等,长度特别长,请求头中的cookie和请求的URL也带着很大块的信息,最终我们决定让referrer只携带网站根地址的信息而不是其完整路径,由此减小了header的大小。

Referrer-Policy

Referrer-Policy的作用就是为了控制请求头中referrer的内容,目前是一个候选标准,不过已经有部分浏览器支持该标准。

目前Referrer-Policy只包含以下几种值:

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

空字符串

若设为空串则默认按照浏览器的机制设置referrer的内容,默认情况下是和no-referrer-when-downgrade设置得一样。

no-referrer

不显示referrer的任何信息在请求头中。

no-referrer-when-downgrade

这是默认值。当从https网站跳转到http网站或者请求其资源时(安全降级HTTPS→HTTP),不显示referrer的信息,其他情况(安全同级HTTPS→HTTPS,或者HTTP→HTTP)则在referrer中显示完整的源网站的URL信息。

same-origin

表示浏览器只会显示referrer信息给同源网站,并且是完整的URL信息。所谓同源网站,是协议、域名、端口都相同的网站。

origin

表示浏览器在referrer字段中只显示源网站的源地址(即协议、域名、端口),而不包括完整的路径。

strict-origin

该策略更为安全些,和origin策略相似,只是不允许referrer信息显示在从https网站到http网站的请求中(安全降级)。

origin-when-cross-origin

当发请求给同源网站时,浏览器会在referrer中显示完整的URL信息,发个非同源网站时,则只显示源地址(协议、域名、端口)

strict-origin-when-cross-origin

origin-when-cross-origin相似,只是不允许referrer信息显示在从https网站到http网站的请求中(安全降级)。

unsaft-url

浏览器总是会将完整的URL信息显示在referrer字段中,无论请求发给任何网站。

Referrer-Policy更改方法

可以有以下5种方法:

1. 通过Referrer-Policy HTTP header设置:

Referrer-Policy: origin

2. 通过<meta>元素改变Referrer Policy,直接修改名为referrer的内容

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

3.<a>, <area>, <img>, <iframe>, 或者<link>元素设置referrerpolicy属性

<a href="http://example.com" referrerpolicy="origin">

4. 如需设置不显示referrer信息时,也可以给 <a>, <area>, <link>元素设置rel的链接关系。

<a href="http://example.com" rel="noreferrer">

总结

使用何种Referrer Policy取决于网站的需求,但是一般来说,unsafe-url是不太建议用的,同样,如果是只想显示网站的根地址,那么建议用strict-origin和strict-origin-when-cross-origin。如果URL中没有什么敏感信息,那就默认使用no-referrer-when-downgrade

98c50f1f5c6d745af3b799bcdbc3169d.png


http://chatgpt.dhexx.cn/article/4c5RpsLI.shtml

相关文章

document.referrer之隐藏来源

document.referrer document.referrer是用来获取跳转链接的来源&#xff0c;正规的解释是:referrer 属性可返回载入当前文档的文档的 URL。 实际中使用在广告相关业务中较多&#xff0c;包括推广等。 举个例子&#xff1a; 比如我们从百度中跳转到w3c&#xff0c;那我们从w3…

java referrer_JavaScript中document.referrer的用法详解

前言 在JavaScript中&#xff0c;document对象有很多属性&#xff0c;其中有3个与对网页的请求有关的属性&#xff0c;它们分别是URL、domain和referrer。 URL属性包含页面完整的URL&#xff0c;domain属性中只包含页面的域名&#xff0c;而referrer属性中则保存着链接到当前页…

meta标签的 referrer

首先&#xff0c;我先不解释&#xff0c;先看下我下面的请求数据图。 1.默认 (<meta name"referrer" content"origin"/>不写 也不 指定时) 2.origin时 3.no-referrer时 实验了这三个&#xff0c;就知道referrer的默认值和请求头的参数键值数据&…

设置referrer

1.全界面设置 所有界面挑战时携带地址origin&#xff0c;所有请求不携带地址never&#xff08;修改后记得从新启动&#xff09; <meta name"referrer" content"origin"> 2.单页面设置 vue的话可以设置一个vue-meta的插件&#xff08;暂不介绍&…

php referrer policy,Referrer Policy介绍

referer的写法是错的&#xff0c;正确的是referrer。大概是早期http规范的拼写错误&#xff0c;然后为了保持向下兼容&#xff0c;就将错就错了。 一、九种policy enum ReferrerPolicy { "", "no-referrer", "no-referrer-when-downgrade", &quo…

Referer和Referrer Policy详解

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

Referer  是什么?

版权所属&#xff1a;SO JSON在线解析 原文地址&#xff1a;https&#xff1a;//www.sojson.com/blog/58.html 转载时必须以链接形式注明原始出处及本声明。 Referer 是 HTTP 请求header 的一部分&#xff0c;当浏览器&#xff08;或者模拟浏览器行为&#xff09;向web 服…

响应式网页设计

目录 Responsive Web Design响应式网页设计流体网格&#xff08;Fluid grid&#xff09;弹性图片&#xff08;Flexible image&#xff09;srcset和sizes属性 SVGbackground-size CSS3媒体查询&#xff08;CSS3 media query&#xff09;和断点 meta渐进增强过时控制工具Moderniz…

css 与 html5

折叠隐藏文字 快捷键&#xff1a;span*6&#xff0c;然后敲一个tap键&#xff0c;会生成6个span标签写业务style之前&#xff0c;需要先清除style的内置样式也就是在style里面写上* {margin: 0;padding: 0;}注意body的height:100vh;不要写100%弹性盒子能使子元素垂直居中的条件…

前端Vue书籍翻页功能利用turn.js来完成以及知识点(源码)

目录 下载文档开始构造方法可配置项 方法语法 事件两种方式添加事件 自动翻页loading加载功能 案例CSSbasic.css源码如下 JS里面代码太多了,直接官网下载index.html源码如下 最终效果如下 下载 下载完里面有源码,好几种翻页效果,很不错~ 官网 文档 接口文档 开始 构造方法 …

html局部翻页效果,基于Turn.js 实现翻书效果实例解析

最近项目经理我个项目练练手,其项目需求是要实现翻书效果,看到这个需求后,我真是懵了,这咋整,我可是java出身的啊,这个问题真是难住我了,后来有同事的指导,之前他曾经做过PC版的翻书效果,当时使用的是Turn.js ,查过其相关API后,整个人突然豁然开朗呀,使用Turn.js 完…

用Modernizr和Yepnope进行递归增强

Alex Sexton的yepnope.js脚本加载程序的1.0版已于上周发布&#xff0c;因此我认为这是一个向您展示如何将Yepnope与Modernizr结合使用HTML5功能而又不招致最新用户下载的绝佳时机。 -划痕的浏览器。 什么是回归增强&#xff1f; 您可能已经熟悉渐进增强的概念&#xff1a;设计…

modernizr_使用Modernizr和Yepnope进行递归增强

modernizr Alex Sexton的yepnope.js脚本加载程序的1.0版已于上周发布&#xff0c;因此我认为这是向您展示如何将Yepnope与Modernizr结合起来以利用HTML5功能而又不招致最新用户的最佳时机。 -划痕的浏览器。 什么是回归增强&#xff1f; 您可能已经熟悉渐进增强的概念&#x…

Modernizr YepNope Tips

<style> <!-- p {text-indent:2em; line-height:24px; font-size:14px} h1, img {margin:0.6em 0} --> </style> 本文由前端开发whqet翻译自WDL&#xff0c;Rochester Oliveira2013年5月2日写的文章Modernizr & YepNope Tips。 每天都有新的更好的浏览…

教你如何申请注册微软邮箱【快速接收发送国外邮件】

如果要收发国内的邮件。网易和QQ不错的选择&#xff0c;如果接受国外邮件&#xff0c;还是国际性的公司&#xff0c;微软的outlook据说用户体验感比较好&#xff0c;先申请着&#xff0c;以备不时之需&#xff01; 申请地址&#xff1a;https://outlook.live.com/owa/ 点击创…

OutLook 2010 设置MSN邮箱

OutLook 2010 设置MSN邮箱 1、选择电子邮件账户&#xff0c;点击下一步 2、选择手动配置服务器设置或其他服务器类型(M)&#xff0c;点击下一步 3、选择Internet电子邮件(I)&#xff0c;点击下一步 4、按照提示&#xff0c;输入姓名&#xff0c;邮件地址&#xff0c;在服务…

如何申请@MSN.Com后缀的邮箱?

最近辞职在家无事,想申请个MSN.Com后缀的信箱,在网上搜索了一下,原来只要从下面的地址进入注册即可!注册抵制: https://accountservices.passport.net/reg.srf?nsmsn.com&sl1&lc2052 一口气申请了2个&#xff0c;哈哈! 您已经创建了一个 MSN 帐户 您现在可以使用电…

便捷注册live、MSN邮箱

live邮箱和msn邮箱现在已经不开放注册&#xff0c;而这两个邮箱还有些简短的很不错的用户名可用&#xff0c;方便记忆。网上有一些使用火狐浏览器和工具进行注册的办法&#xff0c;感觉过于繁琐&#xff0c;之后看到一个便捷的方式&#xff0c;亲测有效&#xff0c;分享给大家。…

阿里达摩院证实叶杰平、薄列峰入职,网易科技数字化产业周报来了

NEW 关注Tech逆向思维视频号 最新视频→【国家云强势来袭&#xff01;云计算市场要变天&#xff1f;】 阿里达摩院证实叶杰平、薄列峰入职&#xff0c; 每周一期数字化产业周报&#xff0c; 记录行业大事记、投融资动态和最新人事变动。 RECOMMEND “ 网易智能有12个不同垂直领…

上海创蓝253董事长_宝剑锋从磨砺出,创蓝253召开第四季度誓师大会

2018 年 10 月 13 日&#xff0c;创蓝 253 业务中心全体成员齐聚一堂&#xff0c;举办第三季度表彰大会暨第四季度誓师大会。大会的主题一是表彰业务中心第三季度优秀员工与优秀团队;二是制定第四季度目标&#xff0c;为冲刺全年目标做准备。 此次誓师大会上&#xff0c;创蓝 2…