개인 Discourse 서버는 브라우저와 iOS 모바일 앱을 통해 정상적으로 작동하며 접근할 수 있습니다.
하지만 Android에서는 Discourse Hub가 서버를 찾을 수 없습니다. (meta.discourse.org와 같은 다른 서버는 찾을 수 있습니다.)
이 문제가 발생하는 이유에 대해 어떤 생각이 있으신가요? Android 모바일 앱이 iOS 버전과 다른 크롤러 에이전트를 사용하여 서버에 접근하는 것일까요? 아니면 다른 이유가 있을까요?
pmusaraj
(Penar Musaraj)
2
네, 모바일 앱은 URL이 Discourse 서버인지 확인하기 위해 몇 가지 특정 요청을 보냅니다.
요청 사항은 두 가지입니다:
serverdomain.com/user-api-key/new에 대한 HEAD 요청
serverdomain.com/site/basic-info.json에 대한 GET 요청
이 중 하나라도 데이터를 반환하지 않으면, 앱은 해당 URL이 Discourse 사이트가 아님을 가정합니다.
가장 도움이 되었습니다, @pmusaraj ! 감사합니다. 추가 질문이 있습니다:
-
두 문명 모두 오류가 아닌 응답을 반환합니다.
-
왜 iOS 버전은 이 테스트를 성공적으로 통과하여 제 서버에 연결할 수 있지만, Android 버전은 그렇지 않을까요?
pmusaraj
(Penar Musaraj)
4
아, 이는 Discourse 측에 문제가 없을 가능성이 크다는 신호입니다. 사이트 인증은 iOS와 안드로이드에서 동일하게 처리되니까요.
과거에 일부 안드로이드 버전/기기가 SSL 인증서에 대해 더 엄격하게 검증했던 적이 있었는데, 오래전에 비슷한 문제가 있었습니다: Community not found in App Android Version 7 - #37 by h.vdheurik
참고로, 친구가 같은 안드로이드 표준 버전으로 테스트해 보았는데 동일한 결과가 나왔습니다. 제 기기는 최신 버전의 GrapheneOS를 실행 중인 Pixel 8a입니다.
2017년에 언급하신 것과 유사한 새로운 암호화 호환성 문제일 수 있을까요?
pmusaraj
(Penar Musaraj)
6
모르겠어요. 사이트 URL을 비공개로 보내주시면, 조금 더 디버깅해볼 수 있습니다.
크롤러 상태를 확인해 보았습니다. 제 서버는 많은 크롤러를 차단하고 있었는데, 그중 하나가 모바일 앱의 연결을 방해하고 있는 것 같았습니다. 공장 초기화 설정을 한 후, 앱이 연결에 성공했습니다.
그 다음 okhttp를 허용된 유일한 크롤러로 추가했는데도 모바일 앱은 여전히 연결할 수 있었습니다. 위기를 모면했습니다. 
안드로이드 앱 코드를 확인하고 이 해결책을 도출해 주신 @pmusaraj님께 감사드립니다.