Hub documentation

Spaces 中的 Cookie 限制

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Spaces 中的 Cookie 限制

在 Hugging Face Spaces 中,应用程序在使用 cookie 时存在某些限制。这主要是由于 Spaces 页面的结构(https://huggingface.co/spaces/<user>/<app>)所致,该结构通过 iframe 托管了位于不同域名(*.hf.space)上的应用程序。出于安全原因,现代浏览器通常会限制使用与父页面域名不同的 iframe 页面中的 cookie。

使用 Docker SDK 托管 Streamlit 应用的影响

这些 Cookie 限制在通过 Docker SDK 托管 Streamlit 应用时可能会引发问题。默认情况下,Streamlit 会启用基于 Cookie 的 XSRF 保护。因此,某些向服务器提交数据的组件(例如 st.file_uploader())在限制 Cookie 使用的 HF Spaces 上无法正常工作。

要解决此问题,您需要将 Streamlit 中的 server.enableXsrfProtection 选项设置为 false。有两种方法可以实现:

  1. 命令行参数:在运行 Streamlit 应用程序时,可以将该选项指定为命令行参数。示例命令如下:

    streamlit run app.py --server.enableXsrfProtection false
  2. 配置文件:或者,您可以在 Streamlit 配置文件 .streamlit/config.toml 中指定该选项。写法如下:

    [server]
    enableXsrfProtection = false

使用 Streamlit SDK 时,您无需担心此问题,因为 SDK 会为您处理。

Update on GitHub