此图片来自微信公众平台未经允许不可引用该怎么办?

网站上有些文章的图片是复制的微信,现在失效了该怎么办呢?

阅读 9.8k
评论
    7 个回答

    这是一个“Referrer防盗链”问题。

    阿里云OSS上的资源也可以设置防盗链。
    OSS 提供 HTTP Referer 白名单配置,用于防止他人盗用 OSS 数据,了解 设置防盗链使用指南

    微信设置了HTTP Referrer白名单,用于放置他人盗取微信平台图片。

    image.png

    想要解决”此图片来自微信公众平台,未经允许不可引用“的问题。

    head标签内加上下面这行标签即可。

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

    为什么可以呢?

    默认情况下,浏览器会在请求头上带上Referrer:location.origin,被访问网站在接到这样的一个请求访问时,可以根据Referrer请求头做出权限控制。

    微信官方根据Referrer HTTP Request header做了权限控制,当访问网站不在自己的信任名单中时,会返回一张”此图片来自微信公众平台,未经允许不可引用“的图片。

    引用策略剖析

    • 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头

    形象理解

    默认引用策略情况下:

    General
    Referrer Policy:no-referrer-when-downgrade
    
    Request Headers
    Referrer: http://foo.bar.baz.com(location.origin)

    设置content="no-referrer"情况下:

    General
    Referrer Policy:no-referrer
    
    Request Headers
    Referrer(没有这个请求头)

    参考:
    https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy
    https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta/name

      相似问题
      推荐文章