wake-up-neo.com

Django-Python-Rest-Framework, Kein Header 'Zugriffskontrolle-Zulassen-Ursprung' ist auf der angeforderten Ressource in Chrome vorhanden, funktioniert in Firefox

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.

7
SPatrick

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'
)
23
Clevison Luiz

Überprüfen Sie zuerst Ihre Anforderungs-URL. Ich hatte dieses Problem, wenn Sie die vue-resource verwenden.

4
zxt077

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

1
Pay C.

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.

0
cece

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.

0
Pansul Bhatt