评论报错get from image source failed: E405解决办法

转载   落格博客  2017-04-11 11:55:27  111 人阅读  5 条评论

投放广告联系   诚邀合作伙伴   赞助我们   公告栏   赞助光荣榜

摘要:

近段时间偶尔在某些 WordPress 站点评论时,总会出现{“error”:”get from image source failed: E405″}报错从而无法发布评论。刚开始我还以为是个别站点问题,没想到度娘之后才发现竟然是普遍问题,主要原因就是使用了 CDN 缓存问题,也就是说 CDN 缓存把站点内的 comments-ajax.js 文件给缓存走了,结果导致路径错误。这个问题在七牛 CDN 中尤为严重,因为使用七牛 CDN 的站点大多数都使用了自定义域名,而自定义域名和站点域名不一致就导致了路径错误评论失败。

评论报错get from image source failed: E405解决办法 WordPress 第1张

修复 get from image source failed: E405 错误思路

  • 修改 comments-ajax.js 文件让它能够支持你的 CDN 路径;
  • 将这个文件单独排除在 CDN 的镜像列表之外。

get from image source failed: E405 错误解决办法

方法一:修改 comments-ajax.js 文件

这种方法的好处是你依旧可以体验完整的 CDN 镜像服务,你需要打开你主题目录下对应的文件然后修改它,找到如下的代码段(一般应该是在开头的)

  1. var i = 0, got = -1, len = document.getElementsByTagName('script').length;
  2. while ( i <= len && got == -1){
  3.     var js_url = document.getElementsByTagName('script')[i].src,
  4.             got = js_url.indexOf('comments-ajax.js'); i++ ;
  5. }

然后就在代码后边加入这样一句话

  1. js_url = js_url.replace('logcg.qiniudn.com','www.logcg.com');

其中 www.logcg.com 是站点域名,logcg.qiniudn.com 是七牛绑定自定义域名,请根据自己清空修改即可。

这样,修改完成后应该是下边的样子:

  1. var i = 0, got = -1, len = document.getElementsByTagName('script').length;
  2. while ( i <= len && got == -1){
  3.     var js_url = document.getElementsByTagName('script')[i].src,
  4.             got = js_url.indexOf('comments-ajax.js'); i++ ;
  5. }
  6. js_url = js_url.replace('logcg.qiniudn.com','www.logcg.com');

然后就保存上传就好了,当然,记得更新七牛上关于comments-ajax.js 的缓存,如果站点本地有缓存的话也记得清空更新哦,要不然会不起作用的。

方法二:添加 CDN 镜像例外

如果你和我一样是使用 WP Super Cache 来开启 CDN 镜像的,那你也可以选择我这种修复办法——直接将这个 js 文件排除在镜像列表之外就好了,虽然加载的时候多了一个 js 文件,但省去了对付七牛那个缓慢的刷新过程,其实还是很不错的,立竿见影啊~

另外,我想其他的 CDN 插件应该也会有类似的排除功能,你可以领会精神然后自己去插件里找找——至于直接使用代码实现 CDN 的大神……请自行折腾。

好了,找到你 WP Super Cache 的 CDN 页面,然后在下边找到“如果是之前有则排除”这一项,将 comment-ajax 填写进去就好了。PS:记得多个语句之间用英文的逗号来分隔哦!

填写完成的样子如图所示:

评论报错get from image source failed: E405解决办法 WordPress 第2张

这样,就只有这一个 comment-ajax 文件被排除在 CDN 之外了。

最后,你可以在页面当中检查元素来验证,比如说这样:

评论报错get from image source failed: E405解决办法 WordPress 第3张

这个时候你去测试评论,就发现已经可以正常使用啦。

小结

方法一需要修改文件,而且要记得清空更新缓存才行,要不然很难生效,据说七牛 CDN 更新缓存的速度很慢;而方法二是最简单快速有效的办法,直接不缓存这个 comment-ajax.js 文件就可以恢复正常使用,以后不管使用什么 CDN 都不用担心评论会出现 {“error”:”get from image source failed: E405″} 报错了。至于哪个方法好,就仁者见仁智者见智了。

文章标签: ,   ,   ,  
原文地址:https://www.logcg.com/archives/579.html
温馨提示:文章内容仅代表作者个人观点,不代表boke112导航赞同其观点和对其真实性负责!
版权声明:本文为转载文章,来源于 落格博客 ,版权归原作者所有,欢迎分享本文,转载请保留出处!
WordPress/zblogPHP免费响应式博客主题Blogs

 发表评论


  1. 诗梦
    诗梦 【书童】 @回复

    好像只有小七牛有这个问题,测试阿里,百度,360都没问题!

  2. 明月登楼
    明月登楼 【王爷】 @回复

    这个问题好像是七牛上比较多见吧!别的 CDN 一般很少碰到!

    • boke112导航
      boke112导航【村长】2017-04-12 09:17  回复

      @明月登楼七牛是因为都使用自定义域名,所以出问题比较多,其他的好像用到二级域名或自定义域名比较少

  3. 龙笑天
    龙笑天 【状元】 @回复

    之前经常遇到…. [赞]

    • boke112导航
      boke112导航【村长】2017-04-11 17:32  回复

      @龙笑天我也是偶尔遇到,所以度娘了一下,没想到竟然是因为缓存造成的,所以转载过来给大家学习一下