百度编辑器ueditor图片上传遭遇防盗链拦截问题(已解决)

浏览:5443 发布日期:2016/02/20 分类:求助交流 关键字: ueditor 盗链 防盗链 referer 百度编辑器 富文本编辑器 新浪sae sae
有一个蛋痛的问题,如果服务器开启了防盗链,ueditor使用的iframe中插入图片会被阻止不能显示,因为img请求没有referer的内容,吧`被认为是盗链了.谁遇到过这个问题么.求解.
-------------------------
自己解决了,方法见下面
--------------------------
用了一个蛋都能疼死的方式解决了.
因为防盗链是通过referer判断的,,而ueditor使用iframe的src,直接去除了referer的可能性.
貌似这变成了一个无解的两难,要不取消防盗链,要不换编辑器.
哭死了.
-----------------------------
无意间在胡乱尝试的时候,发现物如果插入的是页面上其他地方已经显示过的图片(其实就是网站的logo)的时候,编辑器里神奇的直接显示了图片??
仔细一想,原来网页上应用图片的时候是有referer的,图片已经在缓存里了!
编辑器里面的img是从缓存里获得的图片!!
之下好办了.
直接加一个隐藏的div<div class="pure-u-1" id="abc001">
                       abc001隐藏图片在这里
                    </div>
然后拦截ueditor的事件
u1=UE.getEditor('pb63inputcontent');
            u1.addListener('beforeInsertImage', function (t, arg) {
               for(var obj in arg){
                   console.log(arg[obj].src);
                   var vhtml='<br/><img  src="'+arg[obj].src+'"  style="width:100%;"/>';
                   //u1.execCommand( 'inserthtml', vhtml);
                   $("#abc001").append(vhtml);
              };
             });
在向编辑器插入图片之前先添加到隐藏的div里,因为div里的图片不违反盗链规则.所以就正常加载了,然后,编辑器里的img标签就从缓存获得图片正常显示了.
注意要使用多图上传的那个按钮.单独上传比较麻烦,没有现成的事件.可以根据这个思路自己琢磨.
--------------------------------------------------------------------
真是一个比蛋碎了还令人心痛的解决方案.
如果需要的,拿去用吧.
别忘了默念:感谢你啊,我亲爱的祖国,党啊,俺滴度娘!
--------------
再多说一句,uedit的图片选择功能面板可能不太适合你的要求,可以完全自定义一个图片选择面板然后用:
u1.execCommand( 'inserthtml', vhtml);插入图片就行了,还可以更好的定义img的表现形式,比如width:100%图片自适应什么的解决移动端访问的图片显示不全问题.这就是另外的话题了,自己研究吧.
最佳答案
评论( 相关
后面还有条评论,点击查看>>