반응형

안녕하세요.

장고 기반 프레임워크 서버를 띄어 놓고 앱 개발을 하고 있습니다.

안드로이드 에뮬레이터는 안드로이스 스튜디오를 통해서 구동하였습니다.

 

장고 서버를 구동하면 웹 환경에서는 localhost 또는 127.0.0.1 로 접속을 시도 하였습니다.

안드로이드 에뮬레이터에서도 위와 같은 주소를 입력하면 페이지가 아예 뜨지 않습니다.

( 안드로이드 에뮬레이터 -> localhost 장고 서버 )

 

그럼 어떻게 접속을 해야될까요? 다음 문서를 잠시 보겠습니다.

위의 문서는 안드로이드 에뮬레이터 - 네트워킹 부분을 확인 하였습니다.

중간에 보시게 되면 10.0.2.2 IP 주소가 있습니다. 이 IP 주소는 당신의 개발 서버의 127.0.0.1 이라고 합니다.

우리는 안드로이드 에뮬레이터에서 10.0.2.2 로 접속을 해주시면 됩니다.

http://10.0.2.2:8000

8000이라는 포트 번호는 서버 세팅마다 다르니 이점에 참고해주세요.

위의 주소로 에뮬레이터에서 접속을 시도 하였습니다.

장고서버를 사용하시는 분들이라면 에러가 발생할겁니다.

disallowedhost at /

Invalid HTTP_HOST hreader

 

장고 프레임워크는 외부에서 서버로 접속할 때 아이피를 제한할 수 있습니다.

우리의 에뮬레이터는 10.0.2.2 IP를 갖고 있는데 장고 서버로 접속을 시도하다가 제한에 걸려 발생한 에러 입니다.

장고 프로젝트를 열어서 세팅파일에 들어가주세요.

그리고 ALLOWED_HOSTS 코드 부분을 찾아주세요. 저는 다음과 같이 세팅이 되어 있었습니다.

ALLOWED_HOSTS = ["localhost", "0.0.0.0", "127.0.0.1"]

 

접속 하는 호스트를 서버에서 제한할 수 있는데 지금은 위의 3개 호스트만 서버 접속에 허락하겠다는 코드입니다.

모든 호스트가 서버에 접속 할 수 있도록 다음 처럼 환경을 변경 하였습니다. (전체 허용이 아닌 필요로 하는 IP만 추가로 작성을 해주셔 됩니다.)

ALLOWED_HOSTS = ["*"]

 

서버를 다시 구동시켜주시고 안드로이드 에뮬레이터에서 10.0.2.2.:8000 으로 다시 접속 하겠습니다.

 

서버에 정상적으로 접속한 걸 확인 하였습니다.

참고하셔서 문제 해결에 도움이 되셨으면 좋겠습니다 :)

 

 

* 안드로이드 에뮬레이터 공식 문서

https://developer.android.com/studio/run/emulator-networking.html

반응형

+ Recent posts