页面禁止 referer 的 6 种方式
• 2025年8月12日 • 0 条评论
- head 标签中添加 meta属性
可以在 head 标签中添加 meta 属性,设置
name=’referrer’ content=’never’ - 添加ReferrerPolicy属性
添加 meta 标签相当于对文档中的所有链接都取消了 referer ,而 ReferrerPolicy 则更精确的指定了某一个资源的 referer 策略。关于这个策略的定义可以参照 MDN。比如我想只对某一个图片取消referrer,如下编写即可:
<img src="xxxx.jpg" referrerPolicy="no-referrer" />
<a href="xxxx.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" referrerPolicy="no-referrer" />
3. 通过 rel=’noreferrer‘
还可以通过标签的 rel 属性来禁止 referer 头部:
<a href="xxxx.html" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="noreferrer" />
目前兼容性有限, 只支持 <a>, <area>, <form> 这三个元素:
- 代理模式
这个就比较好理解了,把自己的服务器当做代理服务器, 请求先经过自己服务器, 修改referer头, 再反向代理到真正的服务器地址。
- 外链 通过 iframe 来打开
如果是通过外链的话,那么可以通过 iframe 的方式来打开:
function open_without_referrer(link){
document.body.appendChild(document.createElement('iframe')).src = 'javascript:"<script>top.location.replace(\''+link+'\')<\/script>"';
}
这个其实就是通过 top.location.replace 方法替换当前的页面,从而丢失掉 referer 来源,这时候如果点击浏览器的回退按钮,就会发现已经回退不过去了。
- 外链通过新窗口打开
如果是通过 window.open 打开的方式,也可以这样做:
function open_new_window(full_link){
window.open('javascript:window.name;', '<script>location.replace("'+full_link+'")<\/script>');
}
这个跟上面的 iframe 差不多,也是通过 location.replace 方法来更新新打开窗口的文档。从而丢失掉 referer 来源。
文章作者:ma
本文地址:https://me.eastgree.cn/2025/08/12/%e9%a1%b5%e9%9d%a2%e7%a6%81%e6%ad%a2-referer-%e7%9a%84-6-%e7%a7%8d%e6%96%b9%e5%bc%8f/
版权所有 © 转载时必须以链接形式注明作者和原始出处!
还没有任何评论,你来说两句吧