Hub documentation

如何在 Spaces 中处理 URL 参数

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

如何在 Spaces 中处理 URL 参数

您可以使用 URL 查询参数作为数据共享机制,例如,以便能够深入链接到具有特定状态的应用程序。

在 Space 页面(https://huggingface.co/spaces/<user>/<app>)上,实际的应用页面(https://*.hf.space/)被嵌入在一个 iframe 中。父页面 URL 上的查询字符串和哈希值会在初始加载时传递给嵌入的应用,因此嵌入的应用无需特殊处理即可读取这些值。

相比之下,从嵌入式应用中更新父页面 URL 的查询字符串和哈希值要稍微复杂一些。 如果您想在 Docker 或静态 Space 中实现此功能,需要添加以下 JS 代码,该代码会向父页面发送一条包含 queryString 和/或 hash 键的消息。

const queryString = "...";
const hash = "...";

window.parent.postMessage({
    queryString,
    hash,
}, "https://huggingface.co");

这仅适用于 Docker 或静态 Spaces。

对于 Streamlit 应用,Spaces 会自动同步 URL 参数。Gradio 应用可以从 Spaces 页面读取查询参数,但不会将更新后的 URL 参数与父页面同步。

请注意,父页面的 URL 参数仅在初始加载时传播到嵌入式应用 中。因此,即使使用此方法更新了父 URL 的哈希值,嵌入式应用中的 location.hash 也不会改变。

此方法的一个示例可以在这个静态 Space 中找到,whitphx/static-url-param-sync-example。

Update on GitHub