公司项目用的BI工具Superset,数据分析生成的Chart,浏览器单独访问能够加载出来,但是iframe插入html,一直不能渲染出来,网上参考了很多,大致说法都不一样,效果都没有用,后来开始分析配置文件的参数,发现是版本比较低,我这边是0.36,不适用,后来修改了参数才得以解决,记录一下
参考:docker:容器中修改superset配置文件,避免iframe跨站访问问题
以上定位到superset容器:
然后以root帐户进入容器:
执行 docker exec -it --user root 5dd1c0bc2d60 /bin/bash
注意空格问题,否则容易报错
找配置文件进行修改:
find ./ -type f -name config.py
进入目录:
cd /usr/local/lib/python3.6/site-packages/superset
修改文件,注意容器中使用vi报错没这个命令,使用不了,需要安装一下,参考:
apt-get install vim
修改config.py文件中的参数 :vi config.py
PUBLIC_ROLE_LIKE_GAMMA = True
注释:授予公共角色与GAMMA角色相同的权限集。如果想让匿名用户查看,可以设置这里,在仪表盘对特定数据集的授权显示,也在这里设置。
很多网上说要修改HTTP_HEADERS :Dict[str,Any]={},我修改了没有用,原本是红色区域的那个,后来我又改了回去
接下来:修改public权限
can explore on Superset为导出图表
can explore json on Superset为导出图表json
all database access on all_database_access访问所有数据库权限,也可以设置单个
can csrt token on Superset 这个应该是免登录验证
修改到这里,照着网上的说法,本应该是可以的了,但是我还是渲染不出来
再参考: superset(master)iframe跨域集成时遇到难题?
发现是版本低的问题,博文中分析了防御的三道墙,我就不贴了,具体看上面的博文
然后我修改了config.py配置文件的参数
WTF_CSRF_EXEMPT_LIST = [
"superset.views.core.explore_json"
]
退出容器:exit
重启docker :docker stop superset
docker start superset
页面成功!