oauth in iframed spaces broken in incognito

在无痕(incognito)窗口下,通过 Hugging Face 工作流在 iframe 中嵌入 Gradio Space 时,OAuth 登录会因浏览器拦截第三方会话 Cookie 而反复重定向,登录态无法保持。优先确认 Gradio 是否已升级到包含修复的版本(6.26.0 或更新版本),或引

快速结论:在无痕(incognito)窗口下,通过 Hugging Face 工作流在 iframe 中嵌入 Gradio Space 时,OAuth 登录会因浏览器拦截第三方会话 Cookie 而反复重定向,登录态无法保持。优先确认 Gradio 是否已升级到包含修复的版本(6.26.0 或更新版本),或引导用户通过直接访问 *.hf.space 链接来绕过 iframe。

适用环境:Gradio(相关 Issue 标记环境信息缺失,未提供操作系统、Python 或 CUDA 版本);Hugging Face Spaces 嵌入 iframe;无痕浏览器模式。

最快修复方案:升级至 Gradio 6.26.0 或更新版本(该修复由 #13641 合入)。该版本会保留 OAuth 重试次数、清除无效会话 Cookie,并通过直接打开 *.hf.space URL 的方式跳出被拦截的第三方 Cookie iframe 循环。

注意事项:该方案由 Issue 评论者确认已在 main 分支验证通过,并确认相关的 OAuth 回归测试通过;但 Issue 中未提供官方正式发布公告的链接,升级前建议先在目标环境做一次回归验证。

问题场景

用户将 Gradio 应用部署为 Hugging Face Space,并通过 Hugging Face 工作流(workflow)将该 Space 嵌入到 huggingface.co 域下的 iframe 中使用。在普通窗口中登录正常,但在无痕(incognito)窗口下,OAuth 登录后跳转不生效,页面表现为每次登录成功后立即被遗忘,OAuth 流程无限重启。直接打开 Space 的 *.hf.space 独立地址时无此问题。

报错原文

oauth in iframed spaces broken in incognito
the browser blocks the session cookie because the app is loaded inside an iframe on huggingface.co, so each successful login is immediately forgotten and OAuth restarts.

原因分析

最可能的原因:Gradio Space 被嵌入在 huggingface.co 的 iframe 中,而无痕模式下浏览器对第三方 Cookie(third-party cookie)的拦截策略更为严格,导致 Gradio 的会话 Cookie 被阻止写入/读取。每次 OAuth 登录成功后,服务器颁发的会话 Cookie 因浏览器拦截而无法被保存,刷新或重定向后服务端认为未登录,从而反复触发 OAuth 重定向,形成死循环。

环境排查

  • 确认 Gradio 版本是否为 6.26.0 或更高版本,修复由 #13641 合入并随 6.26.0 发布。
  • 确认浏览器是否为无痕模式(普通窗口是否正常)。
  • 确认 Space 是否通过 Hugging Face 工作流嵌入在 huggingface.co 域的 iframe 中(直接访问 *.hf.space 是否正常)。
  • 检查浏览器第三方 Cookie 设置:是否允许 hf.space 域写入 Cookie。

解决步骤

  1. 首选修复:将 Gradio 升级到 6.26.0 或更新版本。此版本保留了 OAuth 重试计数,并会清除无效的会话 Cookie,同时提供跳出第三方 Cookie 被拦截的 iframe 循环逻辑(通过直接 *.hf.space URL 处理)。
  2. 如果无法立即升级:告知用户在无痕窗口下不要通过 Hugging Face 页面中的 iframe 进行 OAuth 登录,而是直接访问该 Space 的独立地址(*.hf.space)。在独立页面下登录成功后,再回到 iframe 中使用。
  3. 若上述步骤仍无法解决,可在浏览器设置中检查第三方 Cookie 策略,将 hf.space 或 Hugging Face 相关域名加入允许列表,此方法可作为临时排查手段。

验证方法

升级 Gradio 至 6.26.0 及以上后,在无痕窗口中重新打开 Hugging Face 工作流中嵌入 iframe 的 Space,执行 OAuth 登录流程。若能正常完成登录跳转并保持会话状态,且不再出现反复重新认证的情况,即可确认问题已解决(评论者已在 main 分支验证此流程,并通过了相关回归测试)。

参考来源

gradio-app/gradio #13777

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 21648

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注