如何解决”此图片来自微信公众平台,未经允许不可引用“问题?

问题描述

从微信公众号中拿到的图片url需要在前端页面中展示,看了许多资料大概:为了防止其他平台引入,特意做了类似防盗链的功能,即使是添加了业务域名,也是如此,效果如图

防盗链原理

在 http 协议请求中 header 里会带个 Referer 字段。通过图片服务器检查 Referer 是否来自规定的域名(白名单),而进行防盗链。 在浏览器中输入防盗链图片地址是能直接访问的。

引用策略说明:

  • HTTP有一个概念叫做引用策略(Referrer Policy),简单理解就是在Request头中是否发送Referrer头
  • 浏览器可以通过meta标签去设置引用策略,上面的name可以理解为策略key,content可以理解为策略value
  • 默认情况下的引用策略是Referrer Policy:no-referrer-when-downgrade,会在被访问网站安全的情况下在Request头中是否发送Referrer: location.origin
  • 当设置为name="referrer" content="no-referrer"时,Referrer Policy:no-referrer,请求头Request中不会带上Referrer头

解决方案

根据图片请求的头部的referer属性做来源判断,

   1.header中添加(根据页面要求在.html中增加 meta)

 <meta name="referrer" content="never">

   2.图片的img标签上添加 referrerpolicy="no-referrer"解决

<img src="xxxxxx" referrerPolicy="no-referrer"  />

第三方代理(参考)不稳定!!

 <img src="https://images.weserv.nl/?url=https://p9-passport.byteacctimg.com/img/user-avatar/f9166aceb85b42133f48537808cef8eb~300x300.image"/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值