Django CORS 설정

Wonbin Lee·2022년 3월 13일
1

Django

목록 보기
1/6
post-custom-banner

Django로 REST Api를 만들때, CORS 오류를 방지하기위해 몇가지 CORS 처리를 해줘야한다.

CORS란?
:https://velog.io/@lob3767/CORS


django-cors-header 설치

django-cors-header : Cross-Origin Resource Sharing(CORS) 에 필요한 서버의 헤더를 조작하기 위한 Django 앱

$ pip install django-cors-header

위와같이 django-cors-header 장고앱을 설치하여 다른 서버에서로부터 내 서버 앱으로 들어오는 브라우저를 통한 요청을 허가한다.

setiings.py 설정

INSTALLED_APPS = [
...

'corsheaders',

...
]

INSTALLED_APPS 에 "corsheders" 을 추가한다.

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    
    ...
]

MIDDELWARE 에 CorsMiddleware 소스를 추가해준다. 이때 주의할점은 MIDDELWARE 최상단에 추가해 주어야한다.
미들웨어는 http 요청 / 응답 처리 중간에서 작동하는 시스템이다. 그렇기 때문에 CorsMiddleware 가 다른 미들웨어보다 아래에 있을경우, 위쪽에 있는 미들웨어들은 응답들에 CORS 헤더를 추가 할수 없게된다. 그렇기 때문에 CorsMiddleware는 최상단에 추가해 주어야 한다.


##CORS
CORS_ORIGIN_ALLOW_ALL=True # <- 모든 호스트 허용
CORS_ALLOW_CREDENTIALS = True # <-쿠키가 cross-site HTTP 요청에 포함될 수 있다

CORS_ALLOW_METHODS = (  #<-실제 요청에 허용되는 HTTP 동사 리스트
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
)

CORS_ALLOW_HEADERS = ( <-실제 요청을 할 때 사용될 수 있는 non-standard HTTP 헤더 목록// 현재 기본값
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
)

APPEND_SLASH = False #<- / 관련 에러 제거

마지막으로 미들웨어의 동작을 구성해준다.

profile
Developer who level up every day ✌️
post-custom-banner

2개의 댓글

comment-user-thumbnail
2022년 8월 17일

감사합니다.

답글 달기
comment-user-thumbnail
2023년 10월 5일

미들웨어가 안 먹혀서 왜 그런지 떠돌던 와중에 최상단에 작성해야한다는 걸 보고 적용했더니 바로 해결되었습니다 ㅠㅠㅠㅠㅠㅠ 감사합니다 ,,, 🥲

답글 달기