2017-07-11 6 views
1

Ich benutze falcon_cors, um einen erholsamen Dienst in Python zu erstellen. Und wenn die Benutzeroberfläche eine http-Anfrage von einer anderen Domain sendet, sendet der Browser zuerst eine OPTIONS-Anfrage. Aber ich bekomme unten Fehler im Browser:Wie aktiviert man die `OPTIONS` Anfrage von falcon_cors?

XMLHttpRequest kann http://localhost:8000/user/ nicht geladen werden. Antwort auf Preflight-Anforderung nicht übergeben Kontrolle der Zugriffskontrolle: Der Wert der 'Access-Control-Allow-Credentials' Header in der Antwort ist '' die muss 'wahr' sein, wenn die Anmeldeinformationen der Anfrage 'include' . Ursprung 'http://localhost:4200' ist daher nicht erlaubt. Der Credentials-Modus von Anforderungen, der von XMLHttpRequest ausgelöst wird, ist , der vom Attribut withCredentials gesteuert wird.

Ich habe gesucht, dass ich OPTIONEN vom Backend erlauben muss, um diese Anfrage zu bearbeiten. Also schreibe ich den Code wie folgt:

f_cors = falcon_cors.CORS(allow_origins_list=[ 
    'http://localhost:4200', 
    'http://127.0.0.1:4200', 
    ], 
    allow_all_headers=True, allow_all_methods=True) 

app_pre_beaker = falcon.API(middleware=[ 
    f_cors.middleware 
]) 

I allow_all_methods=True angegeben haben, auf falcon_cors zu schaffen, sondern ich immer noch die gleichen Fehler. Was sollte ich sonst noch aktualisieren?

Antwort

0

Das durch die Fehlermeldung in der Frage angegebene Problem bezieht sich nicht auf eine Anforderung OPTIONS.

Stattdessen scheint das Problem, dass der Server einen Antwortkopf Access-Control-Allow-Credentials mit einem leeren Wert gesendet. Um dieses Problem zu beheben, müssen Sie den Server so konfigurieren, dass er Access-Control-Allow-Credentials: true sendet. Das heißt, der Header-Wert muss "true" lauten.

Wenn der Server nicht mit Access-Control-Allow-Credentials: true antwortet, dann blockiert Ihr Browser Ihren Frontend-Code, um auf die Antwort zugreifen zu können - weil Ihr Frontend-JavaScript-Code Anmeldeinformationen in der Anfrage enthält, die er an den Server sendet, und in diesem Fall Das CORS-Protokoll erfordert, dass der Server mit Access-Control-Allow-Credentials: true antwortet.

+0

Ja, Sie haben Recht. Nach dem Hinzufügen von 'allow_credentials_all_origins = True 'auf dem' falcon_cors.CORS' Aufruf funktioniert es gut. –

Verwandte Themen