meta "referrer" 是一个怎样的标签,为何普通img可以生效,而backgroundiamge不行

laoLiueizo
  • 318

其实是我最近在写一个chrome插件,其中希望在请求一个图片地址的时候不带referrer信息以此来避开图片资源服务器的防盗链机制。

<meta name="referrer" content="never">
但是我遇到了一个问题,当我设置了如上标签之后,

假设我使用img来请求地址,是不会带上referrer信息的

 <img src={this.props.avatarSrc} alt=""/> // 正常
 // 请求中的 referer policy 为 no-referrer

但是一旦我转换成用背景图片的方式

<span className="avatar" style={{backgroundImage:`url(${this.props.avatarSrc})`}}></span> 

// 发出请求会带上referer
// 同时 请求中的referer policy 变更为 no-referrer-when-downgrade

查询了以下似乎意思是当降级为http请求的时候不加referrer,经过我的尝试,降级为普通http请求似乎也没有生效

所以我的问题就是为何这两种HTTP请求对于referer的差异为何为这么大呢? 其原因在于什么?

::后续更新,我发现在火狐浏览器下两种方式都是OK的,只有在chrome下才会被强制带上referrer

回复
阅读 4.3k
2 个回答

我也遇到这个问题

html heade添加了

<meta name="referrer" content="no-referrer">

css里面的图片无效,img的图片是没有带referrer的,如你所说这个这种情况chrome是这样的,firefox是都没有referrer.
坑。

no-referrer-when-downgrade是默认值,在没有指定任何策略的情况下用户代理的默认行为。在同等安全级别的情况下,引用页面的地址会被发送(HTTPS->HTTPS),但是在降级的情况下不会被发送 (HTTPS->HTTP)。

宣传栏