Comment puis-je activer CORS sur mon Framework Django REST? la référence n'aide pas beaucoup, elle dit que je peux faire par un middleware, mais comment puis-je faire cela?
python
django
cors
django-rest-framework
middleware
Julio Marins
la source
la source
Access-Control-Allow-Origin: *
je ne vois pas pourquoi charger un tout, je vais mettre une autre façon de le faire dans votre réponse afin que les deux méthodes puissent être disponibles. référence: [link (] enable-cors.org/server.html )django-cors-headers
est beaucoup plus flexible que cela. Si vous préférez créer votre propre classe, soyez mon invité. Mais j'utiliserais cette bibliothèque.puis ajoutez-le à vos applications installées:
Vous devrez également ajouter une classe middleware pour écouter les réponses:
plus de détails: https://github.com/ottoyiu/django-cors-headers/#configuration
lire la documentation officielle peut résoudre presque tous les problèmes
la source
CORS_ORIGIN_ALLOW_ALL = True
, maisCORS_ORIGIN_WHITELIST
est toujours défini? La documentation semble donner l'impression que cela n'est pas nécessaire et semble déroutant pour la réponse ici.'corsheaders.middleware.CorsMiddleware',
qu'il faut plutôt être en haut de la liste, sinon la connexion peut être rejetée avant d'y accéder.Vous pouvez le faire en utilisant un middleware personnalisé, même en sachant que la meilleure option consiste à utiliser l'approche testée du package
django-cors-headers
. Cela dit, voici la solution:créez la structure et les fichiers suivants:
-
myapp/middleware/__init__.py
-
myapp/middleware/corsMiddleware.py
ajouter à
settings.py
la ligne marquée:la source
from . import corsMiddleware
Au cas où quelqu'un reviendrait à cette question et déciderait d'écrire son propre middleware, ceci est un exemple de code pour le nouveau middleware de style de Django -
la source
Pour les versions Django> 1.10, selon la documentation , un MIDDLEWARE personnalisé peut être écrit en tant que fonction, disons dans le fichier:
yourproject/middleware.py
(en tant que frère desettings.py
):et enfin, ajoutez le chemin python de cette fonction (à la racine de votre projet) à la liste MIDDLEWARE de votre projet
settings.py
:Peasy facile!
la source
open_access_middleware
.Eh bien, je ne connais pas les gars mais:
en utilisant ici python 3.6 et django 2.2
Renommer MIDDLEWARE_CLASSES en MIDDLEWARE dans settings.py a fonctionné.
la source
Voici les étapes de travail sans avoir besoin de modules externes:
Étape 1: Créez un module dans votre application.
Par exemple, supposons que nous ayons une application appelée user_registration_app . Explorez user_registration_app et créez un nouveau fichier.
Appelons cela comme custom_cors_middleware.py
Collez la définition de classe ci-dessous:
Étape 2: enregistrer un middleware
Dans votre fichier settings.py, ajoutez cette ligne
'user_registration_app.custom_cors_middleware.CustomCorsMiddleware'
Par exemple:
N'oubliez pas de remplacer user_registration_app par le nom de votre application sur laquelle vous avez créé votre module custom_cors_middleware.py.
Vous pouvez maintenant vérifier qu'il ajoutera les en-têtes de réponse requis à toutes les vues du projet!
la source
Suivre les instructions officielles ne fonctionne pas
Enfin, utilisez l'ancienne méthode pour le comprendre.
AJOUTER:
la source