Python/Django

[Django] Django CORS 설정하기

yubi5050 2022. 6. 30. 23:01

👉 1. CORS (Cross-Origin Resource Sharing)

 

웹 어플리케이션이 자신이 속하지 않은 다른 도메인 / 포트 / 프로토콜의 리소스를 요청할 때, Cross-origin HTTP 요청을 보낸다. 이 때 보안상의 이유로 브라우저는 해당 Cross-origin HTTP 요청을 거부하는데, Django 에서는 해당 요청에 대해 CORS Header를 통해 허용이 가능하다.

 

👉 2. Library Install

pip install django-cors-headers

 

👉 3. App, Middleware Setting

INSTALLED_APPS = [
    ...,
    "corsheaders",
    ...,
]

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

 

👉 4. 허용할 도메인 설정

방법 1 

# 일부만 허용
CORS_ALLOWED_ORIGINS = [
    "http://localhost:5500",
    "http://127.0.0.1:5500",
]

# 또는 모두 허용할경우
CORS_ORIGIN_ALLOW_ALL = True

 

방법 2

# 일부만 허용시 다음과 같은 조합도 가능
CORS_ALLOW_ALL_ORIGINS = False
CORS_ORIGIN_WHITELIST = [
    "http://127.0.0.1:3000",
    "http://localhost:5173",
    "https://test-domain.co.kr",
]
CSRF_TRUSTED_ORIGINS = CORS_ORIGIN_WHITELIST

# 자격 증명(쿠키, 인증 헤더 등)을 포함한 요청을 허용할지 여부를 지정
CORS_ALLOW_CREDENTIALS = True

# 정규식으로 허용
CORS_ALLOWED_ORIGIN_REGEXES = [
    r"^https?:\/\/(?:\w+\-?)+\.test-domain\.co\.kr$",
]

 

👉 참고문헌

- https://pypi.org/project/django-cors-headers/

 

django-cors-headers

django-cors-headers is a Django application for handling the server headers required for Cross-Origin Resource Sharing (CORS).

pypi.org