안녕하세요.
장고 기반 프레임워크 서버를 띄어 놓고 앱 개발을 하고 있습니다.
안드로이드 에뮬레이터는 안드로이스 스튜디오를 통해서 구동하였습니다.
장고 서버를 구동하면 웹 환경에서는 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
'Programming > System' 카테고리의 다른 글
[docker] 도커 사용 이유, 심플 예제 및 구동 (기본 사용법) (0) | 2020.05.25 |
---|---|
system에러 - Unable to fetch some archives, maybe run apt-get update... (0) | 2020.04.17 |
[net_netstate] django, That port is already in use (0) | 2019.01.18 |
[OS] 만들면서 배우는 OS 커널의 구조와 원리-부트스트랩 (0) | 2018.12.31 |
[OS] 만들면서 배우는 OS 커널의 구조와 원리-환경 구축 (0) | 2018.12.22 |