# 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 应用程序时，可以将该选项指定为命令行参数。示例命令如下：
   ```shell
   streamlit run app.py --server.enableXsrfProtection false
   ```

2. 配置文件：或者，您可以在 Streamlit 配置文件 `.streamlit/config.toml` 中指定该选项。写法如下：
   ```toml
   [server]
   enableXsrfProtection = false
   ```

> [!TIP]
> 使用 Streamlit SDK 时，您无需担心此问题，因为 SDK 会为您处理。

