You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Superset中创建Handlebars并规避CSP阻止Function()调用错误

解决Superset 4.0.0中Handlebars的CSP错误

这个错误是因为Superset默认的内容安全策略(CSP)禁止了Function()调用,而Handlebars渲染模板时依赖这个功能,调整CSP规则就能解决,Docker环境下有两种操作方式:

方法一:自定义配置文件挂载

  1. 在本地创建superset_config.py文件,写入以下内容:
from superset.config import *

TALISMAN_CONFIG = {
    **TALISMAN_CONFIG,
    "content_security_policy": {
        **TALISMAN_CONFIG["content_security_policy"],
        "script-src": [
            *TALISMAN_CONFIG["content_security_policy"]["script-src"],
            "'unsafe-eval'",
        ],
    },
}
  1. 修改你的Docker Compose配置(docker-compose.yml),在superset服务的volumes字段中添加挂载规则:
services:
  superset:
    # 其他原有配置...
    volumes:
      - ./superset_config.py:/app/superset_config.py
      # 保留原有的其他挂载项...
  1. 重启Superset容器:
docker-compose restart superset

方法二:通过环境变量配置

直接在Docker Compose的环境变量中覆盖CSP规则:

  1. 打开docker-compose.yml,在superset服务的environment字段中添加:
services:
  superset:
    # 其他原有配置...
    environment:
      # 保留原有的其他环境变量...
      SUPERSET_TALISMAN_CONFIG: '{"content_security_policy": {"script-src": ["'self'", "'unsafe-inline'", "'unsafe-eval'", "https://cdn.jsdelivr.net"]}}'
  1. 重启容器生效:
docker-compose restart superset

注意事项

添加'unsafe-eval'会小幅降低CSP的安全防护级别,但这是Handlebars模板正常编译运行的必要条件——Handlebars底层会用Function()构造函数处理模板逻辑。

内容的提问来源于stack exchange,提问作者John Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 03:32:34