Comment puis-je activer CORS sur Django REST Framework
comment activer CORS sur mon cadre REST de Django? référence ne l'aide pas beaucoup, il dit que je peux le faire par un middleware, mais comment puis-je le faire?
5 réponses
le lien auquel vous avez fait référence dans votre question recommande d'utiliser django-cors-headers
dont documentation dit à installer la bibliothèque
pip install django-cors-headers
puis l'ajouter à vos applications installées:
INSTALLED_APPS = (
...
'corsheaders',
...
)
vous aurez aussi besoin d'ajouter une classe middleware pour écouter les réponses:
MIDDLEWARE_CLASSES = (
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
)
Vous pouvez aussi parcourir la section de configuration de sa documentation.
pip install django-cors-headers
puis l'ajouter à vos applications installées:
INSTALLED_APPS = (
...
'corsheaders',
...
)
vous devrez aussi ajouter une classe middleware pour écouter les réponses:
MIDDLEWARE_CLASSES = (
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
)
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_WHITELIST = (
'localhost:3030',
)
CORS_ORIGIN_REGEX_WHITELIST = (
'localhost:3030',
)
plus de détails: https://github.com/ottoyiu/django-cors-headers/#configuration
lire la documentation officielle peut résoudre presque tous les problème
vous pouvez le faire en utilisant un middleware personnalisé, Même si savoir que la meilleure option est d'utiliser l'approche Testée du paquet django-cors-headers
. Avec cela dit, voici la solution:
créer la structure et les fichiers:
-- myapp/middleware/__init__.py
from corsMiddleware import corsMiddleware
-- myapp/middleware/corsMiddleware.py
class corsMiddleware(object):
def process_response(self, req, resp):
resp["Access-Control-Allow-Origin"] = "*"
return resp
ajouter settings.py
la ligne:
MIDDLEWARE_CLASSES = (
"django.contrib.sessions.middleware.SessionMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
# Now we add here our custom middleware
'app_name.middleware.corsMiddleware' <---- this line
)
Dans le cas où quelqu'un est de revenir à cette question et de décider d'écrire leur propre middleware, c'est un exemple de code pour Django style nouveau middleware -
class CORSMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
response["Access-Control-Allow-Origin"] = "*"
return response
Vous pouvez également ajouter le CorsModel modèle à votre base de données. J'ai eu des exceptions tout en essayant de tirer la chasse.
python3 manage.py makemigrations corsheaders
python3 manage.py migrate