Wie kann ich CORS in meinem Django REST Framework aktivieren? Die Referenz hilft nicht viel, sie besagt, dass ich mit einer Middleware arbeiten kann, aber wie kann ich das tun?
python
django
cors
django-rest-framework
middleware
Julio Marins
quelle
quelle
Access-Control-Allow-Origin: *
verstehe ich nicht, warum eine ganze Sache geladen wird, werde ich in Ihrer Antwort einen anderen Weg einfügen, damit beide Methoden verfügbar sind. Referenz: [link (] enable-cors.org/server.html )django-cors-headers
viel flexibler ist. Wenn Sie es vorziehen, Ihre eigene Klasse zu erstellen, seien Sie mein Gast. Aber ich würde diese Bibliothek benutzen.und fügen Sie es dann Ihren installierten Apps hinzu:
Sie müssen auch eine Middleware-Klasse hinzufügen, um die Antworten abzuhören:
Weitere Details: https://github.com/ottoyiu/django-cors-headers/#configuration
Lesen Sie die offizielle Dokumentation kann fast alle Probleme lösen
quelle
CORS_ORIGIN_ALLOW_ALL = True
, ist aberCORS_ORIGIN_WHITELIST
noch eingestellt? Die Dokumente scheinen den Eindruck zu erwecken, dass dies nicht erforderlich ist und die Antwort hier verwirrend zu sein scheint.'corsheaders.middleware.CorsMiddleware',
, dass Sie ganz oben auf der Liste stehen müssen, da sonst die Verbindung möglicherweise abgelehnt wird, bevor Sie sie erreichen.Sie können eine benutzerdefinierte Middleware verwenden, obwohl Sie wissen, dass die beste Option die Verwendung des getesteten Ansatzes des Pakets ist
django-cors-headers
. Hier ist die Lösung:Erstellen Sie die folgende Struktur und Dateien:
- -
myapp/middleware/__init__.py
- -
myapp/middleware/corsMiddleware.py
zur
settings.py
markierten Linie hinzufügen :quelle
from . import corsMiddleware
Für den Fall, dass jemand auf diese Frage zurückkommt und sich entscheidet, seine eigene Middleware zu schreiben, ist dies ein Codebeispiel für die neue Middleware von Django -
quelle
Für Django-Versionen> 1.10 kann laut Dokumentation eine benutzerdefinierte MIDDLEWARE als Funktion geschrieben werden, sagen wir in der Datei:
yourproject/middleware.py
(als Geschwister vonsettings.py
):und schließlich fügen Sie den Python-Pfad dieser Funktion (im Stammverzeichnis Ihres Projekts) zur MIDDLEWARE-Liste in Ihrem Projekt hinzu
settings.py
:Kinderleicht!
quelle
open_access_middleware
.Nun, ich kenne keine Leute, aber:
mit hier Python 3.6 und Django 2.2
Das Umbenennen von MIDDLEWARE_CLASSES in MIDDLEWARE in settings.py hat funktioniert.
quelle
Nachfolgend sind die Arbeitsschritte aufgeführt, ohne dass externe Module erforderlich sind:
Schritt 1: Erstellen Sie ein Modul in Ihrer App.
Nehmen wir beispielsweise an, wir haben eine App namens user_registration_app . Erkunden Sie user_registration_app und erstellen Sie eine neue Datei.
Nennen wir dies custom_cors_middleware.py
Fügen Sie die folgende Klassendefinition ein:
Schritt 2: Registrieren Sie eine Middleware
Fügen Sie in der Datei settings.py Ihres Projekts diese Zeile hinzu
'user_registration_app.custom_cors_middleware.CustomCorsMiddleware'
Z.B:
Denken Sie daran, user_registration_app durch den Namen Ihrer App zu ersetzen, in der Sie Ihr Modul custom_cors_middleware.py erstellt haben.
Sie können jetzt überprüfen, ob allen Ansichten im Projekt die erforderlichen Antwortheader hinzugefügt werden!
quelle
Befolgen Sie die offiziellen Anweisungen funktioniert nicht
Verwenden Sie schließlich den alten Weg, um es herauszufinden.
HINZUFÜGEN:
quelle