교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)
서버가 접근 제어 요청을 위해 보내는 HTTP 응답 헤더
Access-Control-Allow-Origin: <origin> | *
그 외 다양한 종류의 HTTP 응답 헤더에 대해서는 MDN 공식 문서 참고(링크)
'django-cors-headers' 라이브러리를 사용한다. (라이브러리 깃헙 링크)
Python 3.7 to 3.11 supported.
Django 3.2 to 4.1 supported.
해당 라이브러리를 설치하고 requirements.txt를 갱신한다.
$ pip install django-cors-headers
$ pip freeze > requirements.txt
INSTALLED_APPS = [
...,
"corsheaders",
...,
]
MIDDLEWARE = [
...,
"corsheaders.middleware.CorsMiddleware",
"django.middleware.common.CommonMiddleware",
...,
]
CorsMiddleware
는 가능한 CommonMiddleware
보다 먼저 정의되어야 함공식 문서 내용에 따르면, 다음 세 가지 중 최소 한 가지 이상이 정의되어야 한다.
CORS_ALLOWED_ORIGINS
CORS_ALLOWED_ORIGIN_REGEXES
CORS_ALLOW_ALL_ORIGINS
교차 출처 자원 공유를 허용하기 위해 HTTP requests를 만들 origin들의 리스트를 등록한다.
# my_api/settings.py
# 특정 origin만 선택적으로 허용
CORS_ALLOWED_ORIGINS = [
'http://localhost:8080',
]
true
라면 모든 도메인에 대해 교차 출처 자원 공유를 허용한다. 기본값은 false
이다.
# my_api/settings.py
# 모든 Origin 허용
CORS_ALLOWED_ALL_ORIGINS = True