Ich habe einige Stackoverflow-Beiträge zum gleichen Thema recherchiert und gelesen. Keiner hat mein Problem gelöst.
Mein Problem ist, dass ich in meiner Konsole den Fehler "... No 'Access-Control-Allow-Origin' für die angeforderte Ressource ..." erhalten habe.
Ich benutze:
Chrome Version 57.0.2987.133 Firefox Version 52.0.2
Python 2.7 Django 1.11a1
AngularJS
Ich verwende MAMP für mein Front-End Angular Zeug und den Django-Server für das Backend-Zeug.
In meinen Django-Einstellungen habe ich die cors-Middleware integriert und sowohl den Whitelist-Ansatz als auch die Einstellung auf "true" ausprobiert:
MIDDLEWARE = [
'Django.middleware.security.SecurityMiddleware',
'Django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'Django.middleware.common.CommonMiddleware',
'Django.middleware.csrf.CsrfViewMiddleware',
'Django.contrib.auth.middleware.AuthenticationMiddleware',
'Django.contrib.messages.middleware.MessageMiddleware',
'Django.middleware.clickjacking.XFrameOptionsMiddleware',
]
CORS_Origin_ALLOW_ALL = True
Bei Google Chrome bekomme ich immer noch diese Fehlermeldung:
localhost /: 1 XMLHttpRequest kann {meine Endpunkt-URL} nicht laden. Umleiten von {meine Endpunkt-URL} bis {meine Endpunkt-URL mit einem} wurde blockiert von CORS-Richtlinie: Auf .__ ist kein Header "Access-Control-Allow-Origin" vorhanden. die angeforderte Ressource. Origin {anfordernde URL} ist daher nicht erlaubter Zugang.
Es funktioniert angemessen mit Firefox und ich kann nicht herausfinden, warum es für Google Chrome nicht funktioniert. Ich habe keine anderen Browser-Typen ausprobiert. Jede Hilfe wird sehr dankbar sein.
Installieren Sie das Paket Cors-Header mit
pip install Django-cors-headers
Fügt Ihren installierten Apps hinzu
INSTALLED_APPS = (
...
'corsheaders',
...
)
Fügen Sie Ihre MIDDLEWARE hinzu Denken Sie daran, als erstes in der Liste hinzuzufügen
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'Django.middleware.common.CommonMiddleware',
...
]
Stellen Sie vor der Installation von Apps diese Konfiguration für alle Benutzer zur Verfügung
CORS_Origin_ALLOW_ALL=True
Oder erstellen Sie eine Trefferliste
CORS_Origin_WHITELIST = (
'google.com',
'hostname.example.com',
'localhost:8000',
'127.0.0.1:9000'
)
Überprüfen Sie zuerst Ihre Anforderungs-URL. Ich hatte dieses Problem, wenn Sie die vue-resource verwenden.
Stellen Sie sicher, dass Sie 127.0.0.1
NICHT localhost
, da bei Verwendung des Browsers localhost
möglicherweise eine IPv6-Adresse gesucht wird ... oder localhost
so eingerichtet wird, dass 127.0.0.1
beim /etc/hosts
der Grund dafür ist Chrome Browse; Sie können die CORS Toggle-App in Chrome installieren oder Ihren Webcode für Nginx oder Apache bereitstellen und dann Chrome verwenden.
Vielleicht müssen Sie einen Blick darauf werfen, wie Sie Ihre Middlewares anrufen. Wenn sie nicht in der richtigen Reihenfolge sind, können sie diesen Fehler auslösen. Es scheint, als müsste Ihr 'Django.middleware.security.SecurityMiddleware'
unter den 'corsheaders.middleware.CorsMiddleware'
..__ geschoben werden. Außerdem sieht es so aus, als müssten Sie
CORS_ALLOW_CREDENTIALS = True
auch in Ihrem Code hinzufügen.
Hoffe das hilft.