Django로 REST Api를 만들때, CORS 오류를 방지하기위해 몇가지 CORS 처리를 해줘야한다.
CORS란?
:https://velog.io/@lob3767/CORS
django-cors-header : Cross-Origin Resource Sharing(CORS) 에 필요한 서버의 헤더를 조작하기 위한 Django 앱
$ pip install django-cors-header
위와같이 django-cors-header 장고앱을 설치하여 다른 서버에서로부터 내 서버 앱으로 들어오는 브라우저를 통한 요청을 허가한다.
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 #<- / 관련 에러 제거
마지막으로 미들웨어의 동작을 구성해준다.
감사합니다.