主题: 设置了 document.domain 后权限问题
作者: Ankyo Lin, 发布日期: 2011-11-20 16:14:45, 浏览数: 7016

KindEditor版本: 4.0.3


BUG再现步骤:



项目类似于QQ邮箱,每个页面都设了 document.domain


编辑器会出现没有权限的问题


1.  上传图片时,访问 upload_json 这个文件就会提示没权限


虽然我解决了这问题,就是在 upload_json 返回请求呈现页面时加了一句


Response.Write("<script type="text/javascript">document.domain = 'xxx.com';</script>");


但是觉得很别扭,不是好的解决方案


2. 还有,就是word格式粘贴也会提示没权限


3. 还有,就是回发数据后,再访问编辑器的的变量也会提示没权限


例,当前页的一个 iframe 回发了数据,当前页是没刷新的,那个回发了 iframe 这样访问就会提示没有权限


parent.editor



浏览器: 所有都会,Chrome, Firefox, IE6+

期望结果:


期望解决设置 document.domain 的权限问题

作者: Ankyo Lin, 发布日期: 2011-11-20 16:17:35
还有,因为我看了源码是动态写 iframe 的,也尝试过在动态创建 iframe 时,给 iframe 的 document 设置 domain,但是这方法不行
回复
作者: Roddy, 发布日期: 2011-11-20 18:06:20

以前偷懒只处理了加载时的document.domain,具体功能有iframe时没有做处理。

动态生成iframe时需要做一些处理的,可以参考 kindeditor.js里的KEdit.prototype.init,通过isDocumentDomain搜索能看到。

回复
作者: Ankyo Lin, 发布日期: 2011-11-21 15:24:09

回复Roddy:


这个 isDocumentDomain 我试了多次,试过直接给设为 true,还是不行


我研究了一下 CKEditor,它里面有一个 isCustomDomain 的,估计是针对设置了 document.domain 的情况


还有,你们代码里获得当前域名,可以直接这样写  location.hostname

回复
作者: Ankyo Lin, 发布日期: 2011-11-22 09:36:57

已有比较好的办法解决问题


就是担心你们升级了,我又要改

回复
作者: 踏雪追魂, 发布日期: 2012-05-21 09:58:34
什么解决方法啊,说一下啊
回复
作者: 踏雪追魂, 发布日期: 2012-05-21 10:08:19
回复Ankyo Lin:什么解决方法啊,说一下啊
回复
作者: jasen2002, 发布日期: 2012-08-09 11:58:24

改一下这个方法就行了。

function _iframeDoc(iframe) {
    iframe = _get(iframe);
    var obj= null;
    try{
        obj = iframe.contentDocument || iframe.contentWindow.document;
    }catch(j) {
        iframe.src=iframe.src;
        if(_IE && _V < 7){
             window.showModalDialog('javascript:document.write("<script>window.setTimeout(function() {window.close();},50);</script>")');
        }
    }
    return obj || iframe.contentWindow.document; 
}

 

//这一句不能少,少了就是不行

iframe.src=iframe.src;

 

回复
发表新帖 发表回复