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

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

阅读 19.5k
7 个回答

head标签里添加 <meta name="referrer" content="never">

给html加上

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

1.把所有的图片地址匹配替换
2.去掉图片域名,用服务端反向代理图片请求

防盗链的原因是浏览器请求非本域名下的资源,会带上referer头,微信做了检测屏蔽请求。

把图片保存下来放到自己的服务器上。理论上微信是不允许的,但是往往小打小闹,也不会追究你。

提交文章的时候,远程图片本地化。可参考微信图片保存

$rurl=微信图片地址
$picname=date('YmdHis').'_'.rand(10000,99999).'.'.WeixinImage_pictype($rurl);
$pic=$path.'/'.$picname;
$getpic=WeixinImage_Save($rurl,$pic,$picname);

function WeixinImage_Save($url,$filename="",$name) {

global $zbp;
if($url=="") return false;
//if($filename=="") { //为毛文件名会空?
    $ext=strrchr($name,".");
//$ext=WeixinImage_pictype($url);
    if($ext!=".gif" && $ext!=".jpeg" && $ext!=".png") return false;
//    $filename=date("YmdHis").$ext;
//}

// ob_start();
// readfile($url);

$img = GetHttpContent($url);

// ob_end_clean();

$size = strlen($img);
$fp2=@fopen($filename, "a");
fwrite($fp2,$img);
fclose($fp2);
return true; 

}

用php的GD库把你从微信那边弄来的图片转成自己的图片就可以了

这是一个“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

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