[Django] CORS 해결하기: django-cors-headers

2022. 8. 21. 03:12Back-end/Django

반응형

CORS(Cross-Origin Resource Sharing)

  • 클라이언트가 서버에 요청할 때, 포트, 호스트, 스킴을 비교해서 출처가 같아야 합니다.
  • CORS를 위반해도 서버는 정상적으로 응답을 합니다.
  • 웹 브라우저가 판단해서 CORS 위반이라면 응답을 파기합니다.

https://evan-moon.github.io/2020/05/21/about-cors/


Django에서 CORS를 해결하기

1. 터미널에서 다음을 실행하여 django-cors-headers를 설치합니다.

pip install django-cors-headers

 

2. settings.py에 다음을 추가합니다. 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware'는 MIDDLEWARE의 최상위에 위치해야 합니다.

INSTALLED_APPS = [
    ...
    'corsheaders'  # CORS 추가
    ...
]

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',  # CORS 추가
    'django.middleware.common.CommonMiddleware',  # CORS 추가
    ...
]

# CORS 추가
# 모든 출처를 허용하기
CORS_ORIGIN_ALLOW_ALL = True
# 또는 일부 출처만 허용하기
CORS_ORIGIN_WHITELIST = ('http://127.0.0.1:8000', 'http://localhost:3000')

CORS_ALLOW_CREDENTIALS = True

CORS_ORIGIN_ALLOW_ALL로 모든 출처를 허용하거나, CORS_ORIGIN_WHITELIST로 일부 출처만 허용할 수 있습니다. 둘중에서 하나를 선택합니다.

 

 

반응형