장고 설정을 먼저 해보자. 외부에서 내 서버에 접속할 때는 CORS에러가 발생할 수 있다.
CORS에러는 나의 도메인에 다른 도메인이 데이터를 요청할 때 허용되지 않아 생기는 오류인데, 좀 더 자세한 설명은 아래 링크를 확인해보자
Django CORS 설정과 API 연동
장고에서는 CORS
를 해결하기위한 패키지를 제공하고 있다. 아래의 명령어를 사용해 패키지를 설치하자.
>>> pip install django-cors-headers
설치가 완료되었으면 settings.py
의 INSTALLED_APP
과 MIDDLEWARE
에 아래 정보를 추가해주자.
INSTALLED_APPS = [
...
'corsheaders'
]
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
]
마지막으로 settings.py
에 아래 코드를 입력해주면 된다. 아래 설정에서는 모든 요청을 허용하도록 되어있는데, 테스트 환경에서나 사용가능한 설정임을 참고하자.
##CORS
CORS_ORIGIN_ALLOW_ALL=True
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
)
CORS_ALLOW_HEADERS = (
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
)
외부(와이파이 등을 공유하고 있는 협업자)에게 전달할 주소를 뽑는 방법으로는 ifconfig
를 통해 확인하는 방법이 있다. 아래와 같이 쉘에서 ifconfig
를 치면 여러가지 출력물이 나오는데, 여기서 en0
의 inet
부분에 나오는 IP를 협업자에게 전달하면 된다. 현재 인터넷망에서의 임시 IP기 때문에 인터넷 환경이 바뀌면 달라질 수 있다.
>>> ifconfig
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=400<CHANNEL_IO>
ether 80:e6:50:0f:4e:dc
inet6 fe80::1c9f:ed1c:9874:114b%en0 prefixlen 64 secured scopeid 0x4
[inet 10.58.2.159] netmask 0xfffff800 broadcast 10.58.7.255
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
이제 서버를 실행해보자. 아래의 두 가지 방식으로 서버를 열면 외부에서 접속할 수 있는 상태로 서버가 열린다.
python manage.py runserver 0.0.0.0:8000
or
python manage.py runserver 0:8000
외부에서 내 서버에 접속하기 위해서는 위에서 얻은 IP를 사용해서 http://10.58.2.159:8000
으로 접속하면 된다.
안녕하세요! ifconfig 명령어는 어디에 하는 명령어인가요??