使用Postman调用Superset数据集API遇CSRF令牌缺失错误求助
解决Superset API调用时的CSRF Session Token缺失问题
Superset的UI会自动处理CSRF token的生成和携带,但Postman这类工具需要手动完成以下操作:
步骤1:获取Session Cookie和CSRF Token
先通过Superset登录API完成身份验证,拿到所需凭证:
- 发送POST请求到
http://127.0.0.1:8088/api/v1/security/login/ - 请求体用JSON格式:
{"username": "你的用户名", "password": "你的密码", "provider": "db"} - 请求头设置
Content-Type: application/json - 登录成功后,从响应的Set-Cookie头提取
session值,同时从响应的JSON数据里获取csrf_token字段值(部分版本也会在响应头的X-CSRFToken中返回)。
步骤2:调用创建数据集API时携带凭证
发起创建数据集的POST请求时,必须同时携带Session Cookie和CSRF Token:
- 请求头添加两个字段:
X-CSRFToken: 刚才获取的csrf_token值Content-Type: application/json
- 在请求的Cookie中带上
session=刚才获取的session值 - 请求体保持原有内容:
{"database": 3,"schema": "nrpexamqa","table_name": "qti_test"} - 发送POST请求到
http://127.0.0.1:8088/api/v1/dataset/
临时测试方案(禁止生产环境使用)
如果仅做本地测试,可临时关闭CSRF验证:
- 修改Superset配置文件
superset_config.py,添加或修改:WTF_CSRF_ENABLED = False - 重启Superset服务后,直接调用API即可跳过CSRF验证。此操作存在安全风险,生产环境绝对不能使用。
内容的提问来源于stack exchange,提问作者abhishek Singh
相关产品推荐
相关产品推荐

