3세대 웹은 프론트엔드와 백엔드가 분리되어있다는 특징이 있다.
이에 따라, 데이터를 요청/수정하기 위해서는 동일 도메인이여야 한다는 브라우저의 SOP(Same-Origin Policy, 동일 출처 정책) 에 예외를 두어야 하는데, 이때 사용하는 것이 CORS(Cross-Origin Resource Sharing, 교차 출처 리소스 공유) 이다.
CORS를 통해 서버 데이터에 접근이 가능한 도메인 및 메소드를 설정할 수 있다.
Django 프레임워크에서는
django-cors-headers
패키지를 사용하여 CORS를 활성화 한다.
django-cors-headers
패키지 설치 후,
django 프로젝트안settings.py
파일 안에 아래 내용을 수정하여 CORS를 활성화 합니다.# settings.py INSTALLED_APPS = [ ... 'corsheaders', ... ]
# settings.py MIDDLEWARE = [ ... 'corsheaders.middleware.CorsMiddleware', ...
- 허용할 도메인 세팅
# settings.py CORS_ALLOWED_ORIGINS = [ "https://example.com", "https://sub.example.com", "http://localhost:8080", "http://127.0.0.1:9000" ]
- 허용할 메소드 세팅
CORS_ALLOW_METHODS = [ 'DELETE', 'GET', 'OPTIONS', 'PATCH', 'POST', 'PUT', ]
- 허용할 headers 세팅
CORS_ALLOW_HEADERS = [ 'accept', 'accept-encoding', 'authorization', 'content-type', 'dnt', 'origin', 'user-agent', 'x-csrftoken', 'x-requested-with', ]