Discourse Hub 안드로이드 모바일 앱에서 프라이빗 서버를 찾을 수 없음

개인 Discourse 서버는 브라우저와 iOS 모바일 앱을 통해 정상적으로 작동하며 접근할 수 있습니다.

하지만 Android에서는 Discourse Hub가 서버를 찾을 수 없습니다. (meta.discourse.org와 같은 다른 서버는 찾을 수 있습니다.)

이 문제가 발생하는 이유에 대해 어떤 생각이 있으신가요? Android 모바일 앱이 iOS 버전과 다른 크롤러 에이전트를 사용하여 서버에 접근하는 것일까요? 아니면 다른 이유가 있을까요?

네, 모바일 앱은 URL이 Discourse 서버인지 확인하기 위해 몇 가지 특정 요청을 보냅니다.

요청 사항은 두 가지입니다:

  • serverdomain.com/user-api-key/new에 대한 HEAD 요청
  • serverdomain.com/site/basic-info.json에 대한 GET 요청

이 중 하나라도 데이터를 반환하지 않으면, 앱은 해당 URL이 Discourse 사이트가 아님을 가정합니다.

가장 도움이 되었습니다, @pmusaraj ! 감사합니다. 추가 질문이 있습니다:

  1. 두 문명 모두 오류가 아닌 응답을 반환합니다.

  2. 왜 iOS 버전은 이 테스트를 성공적으로 통과하여 제 서버에 연결할 수 있지만, Android 버전은 그렇지 않을까요?

아, 이는 Discourse 측에 문제가 없을 가능성이 크다는 신호입니다. 사이트 인증은 iOS와 안드로이드에서 동일하게 처리되니까요.

과거에 일부 안드로이드 버전/기기가 SSL 인증서에 대해 더 엄격하게 검증했던 적이 있었는데, 오래전에 비슷한 문제가 있었습니다: Community not found in App Android Version 7 - #37 by h.vdheurik

참고로, 친구가 같은 안드로이드 표준 버전으로 테스트해 보았는데 동일한 결과가 나왔습니다. 제 기기는 최신 버전의 GrapheneOS를 실행 중인 Pixel 8a입니다.

2017년에 언급하신 것과 유사한 새로운 암호화 호환성 문제일 수 있을까요?

모르겠어요. 사이트 URL을 비공개로 보내주시면, 조금 더 디버깅해볼 수 있습니다.

크롤러 상태를 확인해 보았습니다. 제 서버는 많은 크롤러를 차단하고 있었는데, 그중 하나가 모바일 앱의 연결을 방해하고 있는 것 같았습니다. 공장 초기화 설정을 한 후, 앱이 연결에 성공했습니다.

그 다음 okhttp를 허용된 유일한 크롤러로 추가했는데도 모바일 앱은 여전히 연결할 수 있었습니다. 위기를 모면했습니다. :slight_smile:

안드로이드 앱 코드를 확인하고 이 해결책을 도출해 주신 @pmusaraj님께 감사드립니다.