php referrer policy,Referrer Policy介绍

article/2025/10/9 2:06:35

referer的写法是错的,正确的是referrer。大概是早期http规范的拼写错误,然后为了保持向下兼容,就将错就错了。

一、九种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"

};

1 no-referrer

表示http请求的请求头没有referer字段

2 no-referrer-when-downgrade(默认值)

如果没指定其他policy,则这个就是浏览器的默认值。即当前的referer就是当前页面的地址(不包括锚点#)。

如果存在降级的情况,则referer不会被发送,也就是请求头没有referer字段,比如https->http的情况。

3 same-origin

如果请求是同源,即没有跨域,则referer字段会被发送。

如果请求存在跨域,则referer字段不会被发送。

4 origin

不管是否存在跨域或者降级的情况,referer字段都会被发送,但不会带上路径等信息,只有域名和端口。

比如页面地址是http://localhost:3000/referer.html,则referer则是http://localhost:3000/

5 strict-origin

在policy=origin的要求内,增加了在降级(https->http)的情况下,referer不会被发送。

6 origin-when-cross-origin

如果是同源的请求,则referer字段都会被发送,且referer的值是当前页面的地址(http://localhost:3000/referer.html)。

如果是跨域的请求,referer也会被发送,但此时referer的值只有域名+端口(http://localhost:3000/),也就是跟origin一样。

7 strict-origin-when-cross-origin

在policy=origin-when-cross-origin的要求内,增加了在降级(https->http)的情况下,referer不会被发送。

8 unsafe-url

不管是否同源或跨域,referer都会被发送。

9 空字符串

如果referer是空字符串,则会根据设定的算法回退到默认值,即no-referrer-when-downgrade

二、referer什么时候不发送

在浏览器地址栏,直接输入或者点击标签的时候,referer就不会被发送。其他方式都会发送。

比如加载页面其他资源,如js,css和img等资源,又或者form表单,或者点击标签。

可通过js来获取referer的值:document.referrer。

但想通过js来改变http请求头的referer是不行的,虽然能改变document.referrer的值,但请求头的referer字段依然不会被改变。

delete window.document.referrer;

window.document.__defineGetter__('referrer', function () {

return "http://referer.com";

});

console.log(window.document.referrer) // http://referer.com

// 需要注意:此时http请求头的referer是没有被改变的

三、哪些html标签可设置referer的policy

1 meta

可通过meta来设置上面提到的九种policy

如:

2 a

可通过ref属性来设置。

如:xxx

3 img

可通过referrerPolicy属性来设置,如:1460000039654977

4 iframe

可通过referrerPolicy属性来设置,如:

上面几种方式,meta是网站级别的,相当于父级,一旦设置,html页面下的a和img等都会继承referer策略。

但可通过单独设置a和img等来实现不同的referer策略。

网上说貌似form表单也可以设置referer,但看了下w3c文档,貌似没有。

而link标签的referrerpolicy属性则属于实验阶段的API。referer的写法是错的,正确的是referrer。大概是早期http规范的拼写错误,然后为了保持向下兼容,就将错就错了。

一、九种policyenum ReferrerPolicy {

"",

"no-referrer",

"no-referrer-when-downgrade",

"same-origin",

"origin",

"strict-origin",

"origin-when-cross-origin",

"strict-origin-when-cross-origin",

"unsafe-url"

};

1 no-referrer

表示http请求的请求头没有referer字段

2 no-referrer-when-downgrade(默认值)

如果没指定其他policy,则这个就是浏览器的默认值。即当前的referer就是当前页面的地址(不包括锚点#)。

如果存在降级的情况,则referer不会被发送,也就是请求头没有referer字段,比如https->http的情况。

3 same-origin

如果请求是同源,即没有跨域,则referer字段会被发送。

如果请求存在跨域,则referer字段不会被发送。

4 origin

不管是否存在跨域或者降级的情况,referer字段都会被发送,但不会带上路径等信息,只有域名和端口。

比如页面地址是http://localhost:3000/referer.html,则referer则是http://localhost:3000/

5 strict-origin

在policy=origin的要求内,增加了在降级(https->http)的情况下,referer不会被发送。

6 origin-when-cross-origin

如果是同源的请求,则referer字段都会被发送,且referer的值是当前页面的地址(http://localhost:3000/referer.html)。

如果是跨域的请求,referer也会被发送,但此时referer的值只有域名+端口(http://localhost:3000/),也就是跟origin一样。

7 strict-origin-when-cross-origin

在policy=origin-when-cross-origin的要求内,增加了在降级(https->http)的情况下,referer不会被发送。

8 unsafe-url

不管是否同源或跨域,referer都会被发送。

9 空字符串

如果referer是空字符串,则会根据设定的算法回退到默认值,即no-referrer-when-downgrade

二、referer什么时候不发送

在浏览器地址栏,直接输入或者点击标签的时候,referer就不会被发送。其他方式都会发送。

比如加载页面其他资源,如js,css和img等资源,又或者form表单,或者点击标签。

可通过js来获取referer的值:document.referrer。

但想通过js来改变http请求头的referer是不行的,虽然能改变document.referrer的值,但请求头的referer字段依然不会被改变。delete window.document.referrer;

window.document.__defineGetter__('referrer', function () {

return "http://referer.com";

});

console.log(window.document.referrer) // http://referer.com

// 需要注意:此时http请求头的referer是没有被改变的

三、哪些html标签可设置referer的policy

1 meta

可通过meta来设置上面提到的九种policy

如:

2 a

可通过ref属性来设置。

如:xxx

3 img

可通过referrerPolicy属性来设置,如:xx.png

4 iframe

可通过referrerPolicy属性来设置,如:

上面几种方式,meta是网站级别的,相当于父级,一旦设置,html页面下的a和img等都会继承referer策略。

但可通过单独设置a和img等来实现不同的referer策略。网上说貌似form表单也可以设置referer,但看了下w3c文档,貌似没有。

而link标签的referrerpolicy属性则属于实验阶段的API。


http://chatgpt.dhexx.cn/article/qfRZESaS.shtml

相关文章

Referer和Referrer Policy详解

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

Referer  是什么?

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

响应式网页设计

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

css 与 html5

折叠隐藏文字 快捷键:span*6,然后敲一个tap键,会生成6个span标签写业务style之前,需要先清除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版已于上周发布,因此我认为这是一个向您展示如何将Yepnope与Modernizr结合使用HTML5功能而又不招致最新用户下载的绝佳时机。 -划痕的浏览器。 什么是回归增强? 您可能已经熟悉渐进增强的概念:设计…

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

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

罗剑锋透视HTTP协议学习笔记---31 | 时代之风(下):HTTP/2内核剖析

31 | 时代之风&#xff08;下&#xff09;&#xff1a;HTTP/2内核剖析 连接前言 连接前言 connection preface PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n在wireshark里称为magic&#xff0c;是一个纯HTTP/1消息&#xff0c;意思是以后的消息切换到HTTP/2 本来h2在ALPN或h2c的connec…

架构师成长之路:如何做基础框架设计?架构师落地的核心能力

前面&#xff0c;已经统一了对框架的认识。 接下来看看如何做基础框架设计&#xff0c;聊聊要做些什么、以及如何做基础框架设计&#xff1b;然后再看看使用基础框架功能的基本方式。 一&#xff1a;基础框架要实现的功能的来源 1&#xff1a;持续积累的通用功能、公共功能 …

浙江省CIO峰会|数据安全+数字化转型,美创特色实践获“年度数字化赋能服务商”

近日&#xff0c;浙江省CIO年度峰会暨数实融合创新发展大会在杭州成功举办。美创科技受邀参加本次峰会&#xff0c;与全省数字化领袖人才共话数字化发展。 对话数字化转型 美创分享能力实践 在本次峰会以“数字化转型的昨天 今天 明天”为主题的论坛对话环节&#xff0c;美创科…

数字化转型导师坚鹏:企业数字化营销能力提升

企业数字化营销能力提升 课程背景&#xff1a; 很多企业存在以下问题&#xff1a; 不清楚数字化营销对企业发展有什么影响&#xff1f; 不知道如何提升企业数字化营销能力&#xff1f; 不知道企业如何开展数字化营销工作&#xff1f; 课程特色&#xff1a; 原创企业数…

构建数据中台建设之路

阿里巴巴数据中台是阿里云上实现数据智能的最佳实践&#xff0c;它是由数据中台方法论组织工具所组成&#xff0c;数据中台方法论采用实现企业数据的全局规划设计&#xff0c;通过前期的设计形成统一的数据标准、计算口径&#xff0c;统一保障数据质量&#xff0c;面向数据分析…