Discourse Hub 安卓手机应用找不到私有服务器

我的私有 Discourse 服务器可以正常工作,并且可以通过浏览器和 iOS 移动应用程序访问。

然而,在安卓上,Discourse Hub 找不到该服务器。(它可以找到 meta.discourse.org 等其他服务器。)

有人知道为什么会失败吗?会不会是安卓移动应用程序访问服务器时使用的爬虫代理(crawler agent)与 iOS 版本不同?还是有其他原因?

是的,移动应用程序会发出一些特定的请求来确定该 URL 是否为 Discourse 服务器。

有两个请求:

  • 一个 HEAD 请求到 serverdomain.com/user-api-key/new
  • 一个 GET 请求到 serverdomain.com/site/basic-info.json

如果其中任何一个没有返回数据,应用程序将假定该 URL 不是 Discourse 站点。

1 个赞

最有帮助了,@pmusaraj!谢谢。跟进一下:

1- GET 请求收到了响应,但 HEAD 语句抛出了“值无效”错误。(meta.discourse.org 也是如此,但两个移动应用都可以连接到此实例。)我该如何修改服务器以对 HEAD 请求产生正确的响应?

2- 为什么 iOS 版本能够成功通过这些测试并连接到我的服务器?

1 个赞

啊,这表明 Discourse 端很可能是正常的,站点验证在 iOS 和 Android 上是相同的。

我记得有些 Android 版本/设备对 SSL 证书更严格,过去有过类似的情况,但那是很久以前了:Community not found in App Android Version 7 - #37 by h.vdheurik

1 个赞

就我所知,我的一位朋友使用原版安卓系统测试了这一点,结果相同。我的设备是运行最新版 GrapheneOS 的 Pixel 8a。

这是否是类似于您在 2017 年提到的新的密码(cypher)不兼容问题?

我不知道。如果你想私下把网站网址发给我,我可以进一步调试一下。

我们检查了爬虫。我的服务器阻止了许多爬虫,其中一个似乎阻止了移动应用程序连接。恢复出厂设置后,该应用程序能够连接。

然后我将 okhttp 添加为唯一允许的爬虫,移动应用程序仍然能够连接。危机解除。:slight_smile:

感谢 @pmusaraj 检查了安卓应用程序代码并解决了这个问题。

2 个赞