Django REST Framework에서 CORS 활성화하기
Django REST Framework에서 CORS 활성화하기
django-cors-headers 사용하기
django-cors-headers는 Django 프로젝트에 CORS 지원을 추가하는 간편한 패키지입니다.
설치
pip install django-cors-headers
설정
settings.py
파일에INSTALLED_APPS
에'django_cors_headers'
추가합니다.
INSTALLED_APPS = [
...
'django_cors_headers',
]
MIDDLEWARE
에'cors.middleware.CorsMiddleware'
추가합니다.
MIDDLEWARE = [
...
'cors.middleware.CorsMiddleware',
]
- CORS 설정을 추가합니다.
CORS_ORIGIN_WHITELIST = [
'http://localhost:8000',
'https://example.com',
]
CORS_ALLOW_CREDENTIALS = True
Django REST Framework 설정 사용하기
Django REST Framework 자체에서 CORS 지원을 활성화할 수 있습니다.
settings.py
파일에REST_FRAMEWORK
에'DEFAULT_RENDERER_CLASSES'
설정 추가합니다.
REST_FRAMEWORK = {
...
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
],
}
views.py
파일에@csrf_exempt
데코레이터를 사용합니다.
@csrf_exempt
def my_view(request):
...
참고:
- CORS 설정은 프로젝트 요구 사항에 맞게 조정해야 합니다.
- 보안을 위해 CORS 설정을 최소 권한으로 설정하는 것이 좋습니다.
Django REST Framework에서 CORS 활성화 예제
# settings.py
INSTALLED_APPS = [
...
'django_cors_headers',
]
MIDDLEWARE = [
...
'cors.middleware.CorsMiddleware',
]
CORS_ORIGIN_WHITELIST = [
'http://localhost:8000',
'https://example.com',
]
CORS_ALLOW_CREDENTIALS = True
# settings.py
REST_FRAMEWORK = {
...
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
],
}
# views.py
@csrf_exempt
def my_view(request):
...
- 위 코드는 기본적인 예시이며, 프로젝트 요구 사항에 맞게 수정해야 합니다.
추가 예시:
- 특정 URL에만 CORS를 허용하는 경우:
CORS_URLS_REGEX = r'^/api/.*$'
CORS_ORIGIN_ALLOW_ALL = True
Django REST Framework에서 CORS 활성화 대체 방법
Nginx는 CORS 설정을 처리하는 데 사용할 수 있는 웹 서버입니다.
sudo apt install nginx
/etc/nginx/conf.d/default.conf
파일에 다음 설정을 추가합니다.
location / {
...
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';
}
Apache 설정 사용하기
sudo apt install apache2
/etc/apache2/apache2.conf
파일에 다음 설정을 추가합니다.
<VirtualHost *:80>
...
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
Header set Access-Control-Allow-Headers "Content-Type, Authorization"
</VirtualHost>
JavaScript 프록시 사용하기
CORS 문제를 해결하기 위해 JavaScript 프록시를 사용할 수 있습니다.
- 프록시 서버를 구축합니다.
- JavaScript 코드에서 프록시 서버를 사용합니다.
- Nginx 또는 Apache 설정을 사용하는 방법은 Django REST Framework 설정을 사용하는 방법보다 더 효율적일 수 있습니다.
- JavaScript 프록시는 간단한 솔루션이지만, 다른 방법보다 덜 안전할 수 있습니다.
python django cors