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

Apache Superset EC2实例登录时CSRF会话令牌缺失问题

解决EC2上Apache Superset Docker的「The CSRF session token is missing.」错误

以下是针对该问题的排查和解决步骤:

  • 检查反向代理/负载均衡的头信息转发
    如果你的EC2实例前端挂载了ALB、Nginx等代理,必须确保代理正确转发Cookie和请求头:

    • 对于ALB:开启粘性会话(基于Cookie),保证会话Cookie能在客户端与Superset容器间正常传递;
    • 对于Nginx:在location块中添加以下配置,确保Superset能正确识别请求来源:
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Forwarded-Host $host;
      proxy_set_header X-Forwarded-Port $server_port;
      proxy_set_header Cookie $http_cookie;
      proxy_pass http://<superset-container-ip>:8088;
      
  • 修正Superset的Cookie配置
    在自定义superset_config.py中添加适配EC2公网访问的配置:

    # 填写EC2公网IP或绑定的域名
    SESSION_COOKIE_DOMAIN = "xxx.xxx.xxx.xxx"
    # HTTPS访问设为True,HTTP访问设为False
    SESSION_COOKIE_SECURE = False
    # 对应你的访问协议(http/https)
    PREFERRED_URL_SCHEME = "http"
    

    本地运行无需这些配置,但远程EC2上Superset需要明确Cookie生效范围,否则浏览器可能不保存Session Cookie,导致CSRF Token无法获取。

  • 验证配置文件是否正确挂载
    确认修改后的superset_config.py已挂载到Docker容器的默认路径(通常为/app/superset_config.py):

    • 用docker run启动时,检查是否包含挂载参数:
      docker run -v /path/to/your/superset_config.py:/app/superset_config.py ... apache/superset
      
    • 用docker-compose启动时,检查volumes节点是否正确映射了自定义配置文件。
      多数情况下问题源于配置未生效,容器仍在使用默认设置。
  • 调整CSRF豁免列表的正确路径
    若未自定义SecurityManager,将豁免列表改为默认路径:

    WTF_CSRF_EXEMPT_LIST = ['SecurityManager.login']
    

    custom_security_manager.login仅在自定义SecurityManager时生效,默认场景下该路径无效。

  • 排除客户端缓存/浏览器限制
    用浏览器隐私窗口测试登录页,或清除浏览器Cookie和缓存。部分浏览器的隐私设置可能阻止非本地站点的Session Cookie存储,导致CSRF Token丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:52:15