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

其实是我最近在写一个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

阅读 7.4k
2 个回答

我也遇到这个问题

html heade添加了

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进