在移动应用(glide)中嵌入 discourse

大家好,

这应该是我忽略的一个非常简单的设置,但我目前正尝试将我使用 Glide(glideapps.com)构建的移动应用中嵌入 Discourse。

然而,当我尝试通过 WebView 组件嵌入时,系统提示我没有正确的访问权限。

我猜需要白名单域名,但我没能在设置中找到相关选项。

谢谢!
Wouter

您可以在“管理 >> 自定义 >> 嵌入”中尝试设置白名单。不过我不确定 Glide 具体在做什么。Discourse 完全可以正常运行在普通的 WebView 中(例如,我们自己的 DiscourseHub iOS 应用就使用了 WebView)。

嗯,试过了,但没有成功。

顺便提一下,这会不会是因为我使用的是试用账户,并且是在你们托管的解决方案上?

还是说这不应该成为问题?

这应该不是问题。我刚刚在 DiscourseHub 应用中测试了您的网站,它在那里可以正常加载。这看起来是 Glide 的问题,我看到您已经在 Glide 社区 提交了一个工单,希望他们能在那里提供帮助。

您也可以尝试嵌入其他网站,例如 Meta,或者 Glide 社区(它也运行在 Discourse 上)。如果这些都无法正常工作,那么问题肯定出在 Glide 方面(要么是 Glide 的 bug,要么是您的实现方式有问题)。

你好,Penar,

是的,我正是这样做的。它们在 WebView 中都无法运行。我会尝试与 Glide 一起解决这个问题。

感谢你的反馈!

你好,Penar,

我收到了 Glide 关于此问题为何无法运行的反馈。

“如果你将那个网址(https://community.pelvic.app/)放入这个工具,它会显示该网站设有阻止其在 iframe 中运行的设置。WebView 本质上就是 iframe 的封装。”

前半部分说法是正确的:默认情况下,我们会阻止将 Discourse 站点加载到 iFrame 中。这能保护您的站点免受多种风险,包括 SEO 操纵和点击劫持(详见此帖)。

不过后半部分有些奇怪:Webview 绝对不是 iFrame。Webview 是嵌入在移动应用中的微型浏览器,其行为与真实浏览器无异。而 iFrame 是一种在网页内加载另一个网页的方式。我猜整个 Glide 应用本质上就是一个网页,因此他们可能是在 Webview 内部使用了 iFrame?

我们提供了一个站点设置,可以切换以允许将您的站点嵌入到 iFrame 中,但我们不建议这样做,因为 Discourse 在 iFrame 中存在一些特殊问题。换句话说,我们可以为您启用 iFrame 嵌入功能,但未来可能会出现无法修复的问题。

感谢 Penar。我将把这个问题带回 Glide,看看是否有简单的解决方法。

你好,Penar,

目前我们不需要开启这个功能。但为了完善这个话题,供日后阅读此内容的人参考,以下是来自 Glide 的反馈:

我们使用 iframe 来驱动我们的 WebView。这是在网页浏览器中实现该功能的唯一方式。他说得对,出于安全考虑,许多网站会阻止这种做法,但这确实是我们目前在 Web 端能做的最佳方案。

Discourse 社区可能误以为我们具备原生应用的 WebView 能力,当然,我们无法使用原生应用的功能。

在此说明一下:Glide 是一个渐进式 Web 应用(PWA),而非原生应用。

感谢你的帮助。