发现
前段时间,使用了一个插件,WPJAM 七牛镜像存储,配置完插件后,发现博客评论的时候,报错{“error”:”get from image source failed: E405″},当开启了Ajax之后无论发布什么内容的评论,都会导致{“error”:”get from image source failed: E405″}报错从而无法发布评论。
原因
经google后得到结论,根据这里的记录表明是七牛CDN的问题。当然,事实证明确实是CDN的问题,但可能并不只有七牛才会导致这样的吧,或者我们可以猜想,是CDN导致了这个问题。
原理就是CDN把你的comments-ajax.js文件给缓存走了,结果导致路径错误,请求发送到了七牛的域名上了。这时候我们使用下面的方法修复这个问题。
修改js文件让它能够支持你的CDN路径
解决办法
修改comments-ajax.js文件
找到主题下面的comments-ajax.js文件,修改完后,依旧可以体验完整的CDN镜像服务,你需要打开你主题目录下对应的文件然后修改它,找到如下的代码段(一般应该是在开头的)
/** * WordPress jQuery-Ajax-Comments v1.3 by Willin Kan. * URI: http://kan.willin.org/?p=1271 */ var i = 0, got = -1, len = document.getElementsByTagName('script').length; while ( i <= len && got == -1){ var js_url = document.getElementsByTagName('script')[i].src, got = js_url.indexOf('comments-ajax.js'); i++ ; }
然后就在代码后边加入这样一句话,具体更改的域名,要和你的网站实际情况一样。
js_url = js_url.replace('http://7xt3ik.com1.z0.glb.clouddn.com','http://www.jiandaima.com/blog');
这样,修改完成后应该是下边的样子
/** * WordPress jQuery-Ajax-Comments v1.3 by Willin Kan. * URI: http://kan.willin.org/?p=1271 */ var i = 0, got = -1, len = document.getElementsByTagName('script').length; while ( i <= len && got == -1){ var js_url = document.getElementsByTagName('script')[i].src, got = js_url.indexOf('comments-ajax.js'); i++ ; } js_url = js_url.replace('http://7xt3ik.com1.z0.glb.clouddn.com','http://www.jiandaima.com/blog');
然后就保存上传就好了,
七牛CDN导致ajax评论报错{“error”:”get from image source failed: E405″}