首页  >  问答  >  正文

javascript - 微信公众号的图片防盗链怎么办?有没有纯前端的方法解决?

百度试了几个方案,不知道是不是微信最近封了还是啥的,不管用,有木有最近解决过这个问题的啊

PHPzPHPz2750 天前1222

全部回复(5)我来回复

  • 阿神

    阿神2017-04-11 09:10:41

    我也在找相关的答案,找到心好累,好多都是不能用的,感觉自己基础还是太差了

    回复
    0
  • PHP中文网

    PHP中文网2017-04-11 09:10:41

    纯前端不可能的,跨域图片请求一定会带上referer头,服务器通过这个来判断是否是盗链。
    用后端中转一下应该可以,但是除此之外微信好像也会有防盗链措施,之前我在公众号看漫画,没看完,锁屏,10分钟后刷新页面就提示我请在微信浏览器打开了。。。

    回复
    0
  • PHP中文网

    PHP中文网2017-04-11 09:10:41

    前端不太清楚,后端有个方法比较可行,缺点是图片流量也会走自己的服务器。

    header('Content-type: image/jpeg'); 
    echo file_get_contents('http://www.qq.com/abc.jpg');

    回复
    0
  • PHP中文网

    PHP中文网2017-04-11 09:10:41

    我说一种办法,不过你可能不会喜欢的……

    所谓防盗链,就是不希望非自己的网站或页面去使用自己网站的资源。

    一般做法是后端处理referer头,虽然并不完美但可以阻挡多数问题。

    如果你要纯前端解决的话,那么首先在你自己的页面上也不能有src。

    那么思路就很简单了,在前端打开页面时,自己往该有图片的地方画图片,canvas或者其他方式。而且这个方式还是会传图片真实地址的,所以你还要自己做加密处理。

    100%纯前端的方法是不可能,因为你后端用url存着,外部就有办法看到这个url。

    回复
    0
  • 高洛峰

    高洛峰2017-04-11 09:10:41

    如果是最低劳力层本得解决显示问题,可以用前后端的方式 先用后端跳板

    然后用前端的js代码

    var imgs=$(".news-editor").find("img"); 
    //显示图片的内容都在类为news-editor的层里面,这里用了jquery
    
    for (var i = 0; i < imgs.length; i++) { 
    imgs[i].src = "跳板文件地址?url=" + imgs[i].src }
    //为每个img标签的src属性加上跳板文件的前缀。

    这样只要加个跳板后端文件和在前端模板文件上加一段js代码 即可通用

    回复
    0
  • 取消回复