网站上有些文章的图片是复制的微信,现在失效了该怎么办呢?
提交文章的时候,远程图片本地化。可参考微信图片保存
$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;
}
这是一个“Referrer防盗链”问题。
阿里云OSS上的资源也可以设置防盗链。
OSS 提供 HTTP Referer 白名单配置,用于防止他人盗用 OSS 数据,了解 设置防盗链使用指南。
微信设置了HTTP Referrer白名单,用于放置他人盗取微信平台图片。
想要解决”此图片来自微信公众平台,未经允许不可引用“的问题。
head标签内加上下面这行标签即可。
<meta name="referrer" content="no-referrer">
默认情况下,浏览器会在请求头上带上Referrer:location.origin,被访问网站在接到这样的一个请求访问时,可以根据Referrer请求头做出权限控制。
微信官方根据Referrer HTTP Request header做了权限控制,当访问网站不在自己的信任名单中时,会返回一张”此图片来自微信公众平台,未经允许不可引用“的图片。
默认引用策略情况下:
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
13 回答13k 阅读
8 回答2.8k 阅读
2 回答5.2k 阅读✓ 已解决
7 回答2.2k 阅读
5 回答1.4k 阅读
3 回答2.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
head标签里添加 <meta name="referrer" content="never">