Discourse Hub Androidモバイルアプリがプライベートサーバーを見つけられない

私のプライベートなDiscourseサーバーは動作しており、ブラウザとiOSモバイルアプリからはアクセスできます。

しかし、AndroidではDiscourse Hubがサーバーを見つけることができません。(meta.discourse.orgのような他のサーバーは見つけられます。)

なぜこれが失敗するのか、何か考えはありますか?Androidモバイルアプリは、iOSバージョンとは異なるクローラーエージェントを使用してサーバーにアクセスしているのでしょうか?それとも何か他の理由があるのでしょうか?

はい、モバイルアプリは、そのURLがDiscourseサーバーであることを確認するために、いくつかの特定の要求を行います。

2つの要求があります。

  • serverdomain.com/user-api-key/new への HEAD 要求
  • serverdomain.com/site/basic-info.json への GET 要求

どちらか一方からデータが返されない場合、アプリはその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)の非互換性によるものでしょうか?

わかりません。もしサイトのURLをプライベートで送っていただければ、もう少し詳しくデバッグできます。

クローラーを確認しました。私のサーバーは多くのクローラーをブロックしており、そのうちの1つがモバイルアプリの接続を妨げていたようです。工場出荷時の設定にリセットした後、アプリは接続できるようになりました。

その後、okhttpのみを許可されたクローラーとして追加しましたが、モバイルアプリは引き続き接続できました。危機は回避されました。:slight_smile:

Androidアプリのコードを確認し、この解決策に取り組んでくれた@pmusarajに感謝します。

「いいね!」 2