如何禁用Streamlit XsrfProtection解决Heroku部署CORS覆盖报错
禁用Streamlit XSRF保护的配置方法
你遇到的配置覆盖问题是Streamlit的默认规则导致的:当server.enableCORS=false但server.enableXsrfProtection保持默认true时,二者逻辑冲突,系统会强制将enableCORS重置为true,只需要在配置中显式关闭XSRF保护即可解决。
方法1:修改setup.sh配置(推荐)
直接在你现有的~/.streamlit/config.toml生成逻辑里,加上enableXsrfProtection=false的配置项,修改后的完整setup.sh内容如下:
mkdir -p ~/.streamlit/ echo "\ [server]\n\ port=$PORT\n\ enableCORS=false\n\ enableXsrfProtection=false\n\ headless=true\n\ \n\ " > ~/.streamlit/config.toml
方法2:启动命令传参(无需修改setup.sh)
如果你不想改动setup.sh,也可以直接在Procfile的启动命令中追加参数,在启动时直接指定配置:
web: sh setup.sh && streamlit run app.py --server.enableCORS=false --server.enableXsrfProtection=false
修改完成后重新提交代码推送到Heroku触发重新部署即可,部署后日志里的配置覆盖警告会消失,对应的H14应用错误也会随之解决。
注意:关闭XSRF保护意味着应用不再自带跨站请求伪造防护,如果你部署的是面向公网的生产应用,建议后续自行补充对应的安全校验逻辑。
内容的提问来源于stack exchange,提问作者Sneha Kumari
相关产品推荐
相关产品推荐

