L'application mobile Android Discourse Hub ne trouve pas le serveur privé

Mon serveur Discourse privé fonctionne et est accessible via le navigateur et l’application mobile iOS.

Cependant, sur Android, Discourse Hub ne parvient pas à trouver le serveur. (Il peut trouver d’autres serveurs comme meta.discourse.org.)

Une idée de la raison pour laquelle cela échoue ? Se pourrait-il que l’application mobile Android utilise un agent d’exploration différent pour accéder au serveur que la version iOS ? Ou une autre raison ?

Oui, l’application mobile effectue quelques requêtes spécifiques pour déterminer que l’URL est un serveur Discourse.

Il y a deux requêtes :

  • une requête HEAD vers serverdomain.com/user-api-key/new
  • une requête GET vers serverdomain.com/site/basic-info.json

Si l’une d’elles ne renvoie pas de données, l’application supposera que l’URL n’est pas un site Discourse.

1 « J'aime »

Le plus utile, @pmusaraj ! Merci. Pour faire suite :

1- La requête GET reçoit une réponse, mais l’instruction HEAD renvoie une erreur « la valeur n’est pas valide ». (Ceci est également vrai pour meta.discourse.org, pourtant les deux applications mobiles peuvent se connecter à cette instance.) Comment modifier le serveur pour produire une réponse appropriée à la requête HEAD ?

2- Pourquoi la version iOS réussit-elle ces tests et se connecte-t-elle à mon serveur ?

1 « J'aime »

Ah, c’est une indication que le côté Discourse est très probablement correct, la vérification du site est la même sur iOS et Android.

Je me souviens que certaines versions/appareils Android sont plus stricts avec les certificats SSL, il y a eu un problème similaire dans le passé, mais il y a longtemps : Community not found in App Android Version 7 - #37 by h.vdheurik

1 « J'aime »

Pour ce que ça vaut, un ami a testé ceci en utilisant un Android standard avec le même résultat. Mon appareil est un Pixel 8a exécutant la dernière version de GrapheneOS.

Pourrait-il s’agir d’une nouvelle incompatibilité de chiffrement similaire à celle à laquelle vous avez fait référence en 2017 ?

Je ne sais pas. Si vous souhaitez m’envoyer l’URL du site en privé, je peux déboguer un peu plus loin.

Nous avons vérifié les robots d’exploration. Mon serveur a bloqué de nombreux robots d’exploration et il semble que l’un d’eux empêchait l’application mobile de se connecter. Après avoir réinitialisé les paramètres d’usine, l’application a pu se connecter.

Ensuite, j’ai ajouté okhttp comme seul robot d’exploration autorisé et l’application mobile a toujours pu se connecter. Crise évitée. :slight_smile:

Merci à @pmusaraj d’avoir vérifié le code de l’application Android et d’avoir trouvé cette solution.

2 « J'aime »