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

在Azure App Service中配置Streamlit的CORS与XSRF问题排查

Azure App Service 部署 Streamlit 解决文件上传403(CORS/XSRF)问题

核心配置方案(适配Streamlit 1.29+/1.30+)

1. 正确设置启动命令(Azure App Service 配置页)

Azure App Service的启动命令要聚焦Streamlit服务端配置,别碰browser.*系列参数(那是本地开发时用于浏览器自动跳转的,云部署完全没用)。正确命令如下:

streamlit run your_app.py --server.address 0.0.0.0 --server.port 8000 --server.enableXsrfProtection true --server.enableCORS true
  • 说明:0.0.0.0让Streamlit监听容器所有网卡,适配Azure的云环境;8000是Azure App Service默认容器端口(若改端口,需同步在App Service「配置」→「常规设置」里修改对应端口值);保持enableXsrfProtection和enableCORS开启,符合官方安全建议。

2. config.toml 正确配置(可选,与启动命令二选一)

如果想用配置文件替代启动命令,在项目根目录创建.streamlit/config.toml,写入以下内容:

[server]
address = "0.0.0.0"
port = 8000
enableXsrfProtection = true
enableCORS = true

注意:绝对不要设置browser.serverAddress或browser.serverPort,这俩参数只会导致地址前缀异常,完全不适配云部署场景。

3. Azure App Service 额外配置

  • 进入App Service「配置」→「常规设置」,确保「端口」与你指定的server.port一致(比如8000);若用启动命令则直接填入,用config.toml则留空启动命令。
  • 检查「网络」→「CORS」设置,测试阶段可填*,生产环境建议指定应用的具体域名(Streamlit自身已处理CORS,此处为兜底配置)。

验证步骤

  1. 部署后打开应用,按F12调出浏览器控制台,上传文件时查看网络请求状态码;若仍403,检查请求头里是否存在X-Xsrftoken——开启XSRF保护后Streamlit会自动生成该令牌。
  2. 若端口连接失败,确认Azure App Service的端口与Streamlit配置的server.port完全匹配;如需用80端口,需同时在启动命令里指定server.port 80,并同步修改App Service常规设置的端口为80。

常见坑点

  • 别搞混server.*和browser.*:前者是服务端监听配置,后者是本地浏览器跳转配置,云部署只需要前者。
  • Streamlit 1.29+默认开启XSRF保护,云环境下无需手动设置server.baseUrlPath,除非你用了自定义域名或路径。

内容的提问来源于stack exchange,提问作者Johannes Schöck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 04:23:15