Skip to content

解决微信公众号文章中的图片不能显示的问题

Published: at 01:03 PM | 4 min read

问题

在使用微信公众号文章中的图片时经常会看到”此图片来自微信公众平台未经允许不可引用”的图片,如下:

原因

当我们在浏览网页时,服务器会返回网页的文本内容,而对于网页中的图片,浏览器需要请求图片所在的服务器来获取图片内容。在互联网上,通常会被要求提供“引荐人”的信息,即告诉服务器你是从哪里得知该网页的。为了传递这个信息,HTTP协议设计了一个名为Referer(错误拼写,正确拼写应为Referrer)的字段,它在请求头中带上引荐网页的URL。

在浏览器访问包含微信公众号图片的网页时,浏览器会自动将请求该图片的网页地址作为Referer字段的值,发送给微信图片服务器。微信图片服务器会检查Referer字段,如果发现不是来自微信的域名,就会返回一张特定的图片,上面写着“此图片来自微信公众平台,未经允许不可引用”。这是为了防止其他网站使用微信的图片,避免浪费微信的带宽资源。这种机制被称为防盗链。

因此,当我们在笔记软件或阅读器中直接加入来自微信公众号的图片时,浏览器会将请求发送给微信图片服务器,并在Referer字段中携带使用了该图片的网页地址。微信图片服务器根据这个信息来判断是否允许请求,并返回相应的结果图片。

解决

在html head中加入:

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

当然这样做会带来一些潜在的问题:

设置 content=“never” 意味着浏览器将永远不会发送referrer头。

  1. 数据分析的困难:许多网站依赖于referrer数据来了解用户是如何找到他们的网站的,例如,他们是从搜索引擎、社交媒体网站还是其他网站导航过来的。如果你设置了 content=“never”,那么这些网站将无法获取这些信息。

  2. 影响搜索引擎优化(SEO):搜索引擎可能使用referrer数据来帮助理解网页之间的关系,并可能使用这些信息来影响搜索结果的排名。如果你的网站不发送referrer信息,这可能会影响你的SEO。

  3. 破坏某些功能:某些网站可能依赖于referrer信息来提供某些功能,例如,他们可能使用referrer信息来判断用户是从哪个页面导航过来的,然后根据这些信息来定制用户的体验。如果你的网站不发送referrer信息,这可能会破坏这些功能。

然而,有时出于隐私考虑,你可能希望不发送referrer信息。在这种情况下,你需要权衡上述潜在的缺点和用户隐私的重要性,以决定是否使用 content=“never”。