Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

在配置了不同域的ucenter时,x3.4的discuz主站会被跨域限制卡住导致无法修改头像

[复制链接]
neko.cannon 发表于 2018-3-27 17:18:04 | 显示全部楼层 |阅读模式
本帖最后由 neko.cannon 于 2018-3-27 17:35 编辑



RT……

Ucenter配置在 http://uc.xxxx.net 版本1.6.0
discuz配置在 http://forms.xxxx.net 版本x3.4

报错提示
Uncaught DOMException: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin "http://forms.xxxx.net" from accessing a cross-origin frame.
    at HTMLIFrameElement.contentDocumentDesc.get [as contentDocument] (<anonymous>:66:14)
    at uploadAvatarDone (http://forms.xxxx ... avatar.js?Ae4:46:33)
    at HTMLIFrameElement.onload (http://forms.xxxx ... cp&ac=avatar:210:97)


上传图片时发送到ucenter域名下的请求是
post /index.php?m=user&a=uploadavatar&appid=1&ucapi=uc.xxxx.net&avatartype=virtual&uploadSize=2048

根据discuz里/static/avatar/avatar.js这里面的逻辑来看,
头像上传是直接把数据发送到ucenter【就是上面的请求】
然后结果发送到iframe,
再去iframe里面取那个文件地址。
而这里就遇到了一个跨域的安全性问题,现在的chrome和edge浏览器【其他的我没有测试】对于iframe来说配置 Access-Control-Allow-Origin:
* 是没有用的,
必须通过<script>document.domain=""</script>来配置主页面和iframe的域名才行,但是这样配置就需要同时修改ucenter的那个页面和discuz的页面,还得单独修改js文件,过滤掉这串script

话说这里其实就只是传一个图片地址,而且已经有flash来兼容旧版了,那用ajax或者pjax封起来不就好了……

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-23 19:12 , Processed in 0.021482 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表