LMLPHP后院

referer 只有域名的问题技术

maybe yes 发表于 2022-04-05 11:15

再次骂 Google Chrome,总是瞎鸡吧乱改规则。

Chrome 真是个蛋疼的浏览器,总是乱改规则,前面遇到过 post 不携带 Cookie 问题现在又遇到了不携带 Referer 的问题。感觉这帮制定规则的人脑子🧠有问题,你如果是为了安全,可以由网站主来决定,我如果不想携带,那我做个设置,你来瞎搞什么啊,Javascript 本身是可以获取的,我如果要传,不就是麻烦一点吗,一样可以做得到。这个事情困扰了我好久,发现统计的路径总是只有域名,我开始还以为是跳转出现的问题,一直没有时间去查个究竟,最近发现实在是奇怪,越来越奇怪,才发现,原来是 Chrome 85 惹的祸啊。

最近还在想 http_accept_language 的格式问题,作为代码工作者一定会发现,被它这个字段的规则弄糊涂了,实在是费解啊。http_accept_language 如果按 ; 分号分割,感觉难理解,如果按照 , 逗号分隔,也不是那么容易理解。最有发现确实是 , 逗号分隔,按照有点常识的人来讲,逗号 , 怎么可以用来做分隔呢,分号 ; 才更合理啊。现在真的是脱节了,指定规则的人经验非常不丰富,但是规则一旦确定,大家只能遵守!

Chrome85 的 referer 策略修改
原本默认的 referer 策略(policy)是no-referrer-when-downgrade,即允许referer带上来源页面地址上的请求参数,Chrome85将策略修改为strict-origin-when-cross-origin,即如果请求地址与请求页面非同源,将只携带请求的域名,不会再带上来源页面地址的请求参数。

为什么使用strict-origin-when-cross-origin
增强隐私:使用strict-origin-when-cross-origin将在请求非同源资源的时候,让referer只带上来源页面的源域名,不会暴露链接上的其他参数。

如何开启/关闭no-referrer-when-downgrade
目前只有Chrome85主动使用了no-referrer-when-downgrade这个策略,如果要在其他浏览器开启这个策略,可以分别在前后端做配置:


//前端在html页面配置:
<meta name="referrer" content="strict-origin-when-cross-origin" />
//服务端可以在请求头上加上 Referer Policy 这个请求头:

Referer Policy: strict-origin-when-cross-origin
//关闭strict-origin-when-cross-origin
//前端在html设置:
<meta name="referrer" content="no-referrer-when-downgrade"" />
<!-- 对某个特定资源设置 referer 策略 -->
<img src="…" referrerpolicy="no-referrer-when-downgrade" />
服务端将Referer Policy设置为no-referrer-when-downgrade

Referer Policy: no-referrer-when-downgrade

作者:咯噔爸比
链接:https://www.jianshu.com/p/c90bbc842dbd
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2024-04-25 19:28:44 1714044524 0.022253