Django - 내 로컬 서버에서 외부접속 허용하기(corsheaders)

jomminii_before·2020년 2월 21일
3
post-custom-banner

장고 설정

장고 설정을 먼저 해보자. 외부에서 내 서버에 접속할 때는 CORS에러가 발생할 수 있다.

CORS에러는 나의 도메인에 다른 도메인이 데이터를 요청할 때 허용되지 않아 생기는 오류인데, 좀 더 자세한 설명은 아래 링크를 확인해보자
Django CORS 설정과 API 연동

장고에서는 CORS를 해결하기위한 패키지를 제공하고 있다. 아래의 명령어를 사용해 패키지를 설치하자.

>>> pip install django-cors-headers

설치가 완료되었으면 settings.pyINSTALLED_APPMIDDLEWARE에 아래 정보를 추가해주자.

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를 치면 여러가지 출력물이 나오는데, 여기서 en0inet 부분에 나오는 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으로 접속하면 된다.

profile
https://velog.io/@jomminii 로 이동했습니다.
post-custom-banner

3개의 댓글

comment-user-thumbnail
2020년 9월 28일

안녕하세요! ifconfig 명령어는 어디에 하는 명령어인가요??

1개의 답글
comment-user-thumbnail
2021년 1월 11일

장고 setting 관련해서 외부 호스트 연결할 때 ALLOWED_HOSTS 세팅도 해야한다는 것을 추가해서 알려주시면 좋을 것 같네요 .

답글 달기