2017-07-09 2 views
2

Ich versuche, die einfachste Ruhe API zu bekommen, die ich in Python und ich habe Probleme. Ich bin mir nicht sicher, was ich falsch mache, aber ich denke, es hat etwas mit CORS zu tun. Dies ist frustrierend, da ich das Paket flask_cors verwendet habe, um dies zu beheben, und es scheint nicht zu funktionieren.Python/Flask Rest API nicht passieren Preflight w/CORS

In meiner main.py Datei Ich habe folgende

from flask import Flask 
from flask_cors import CORS, cross_origin 

app = Flask(__name__) 
CORS(app) 

import routes.login 

if __name__ == '__main__': 
    app.run(debug=True) 

Für mein Projekt habe ich diese Struktur als mein Ordner:

main.py 
__init__.py 
routes 
    __init__.py 
    login.py 

Und ich habe den folgenden Code in login.py

from flask import Flask 
from flask_cors import CORS, cross_origin 

from main import app 
CORS(app) 

@app.route('/login', methods=['POST', 'GET']) 
@cross_origin() 
def login(name, password): 
    if request.method == 'POST': 
     print('inside login POST') 
    if request.method == 'GET': 
     print('inside login GET') 

ich zur Zeit immer diese Fehlermeldung:

xhr.js:178 OPTIONS http://localhost:5000/login 404 (NOT FOUND) 
dispatchXhrRequest @ xhr.js:178 
xhrAdapter @ xhr.js:12 
dispatchRequest @ dispatchRequest.js:52 
:3000/pictureswapper:1 XMLHttpRequest cannot load http://localhost:5000/login. 
Response for preflight has invalid HTTP status code 404 

Es gibt eine Art von CORS Fehler, aber ich weiß wirklich nicht, was falsch läuft. Irgendwelche Ideen?

EDIT: Der einzige Ort in der Dokumentation, die etwas über Preflight zu sagen hat, ist hier (https://flask-cors.readthedocs.io/en/v1.3.1/index.html?highlight=preflight). Wenn ich

@cross_origin(headers=['Content-Type']) # Send Access-Control-Allow-Headers 

hinzufügen bricht es nicht die Anwendung, aber es ist auch nicht den Fehler beheben.

+0

Ich habe auch versucht, die hier verwendete Methode zu verwenden: http://flask.pooco.org/snippets/56/, und in dieser stackoverflow-Antwort referenziert: https://stackoverflow.com/questions/22181384/javascript -no-access-control-allow-origin-header-is-present-on-the-requested und es scheint auch nicht zu funktionieren. Derselbe Fehler. –

+0

Haben Sie die URL in einer Browser-Adressleiste zuerst getestet, um sicherzustellen, dass sie tatsächlich funktioniert? –

Antwort

1

Noch einmal nach ein paar Monaten.

Einer der fiesen Fehler in Python/Flasche scheint zu sein, dass der kompilierte Code zwischengespeichert wird, also wenn Sie etwas am Eingangspunkt der App ändern (zB main.py), und löschen Sie die Binärdateien nicht Fläschchen-Export erstellt dann jedes Mal, wenn Sie kolben exportieren und neu kompilieren, kann es alten Code verwenden!

Achten Sie darauf, zu löschen (in Atom sind sie die lila 1/0-Dateien - wenn Sie Dateisymbole aktiviert haben - gekennzeichnet. Pyc) diese Dateien, wenn Sie unheimliche Ausgabe bekommen.

0

Fügen Sie dem Schlüsselwort methods des Routendekorators OPTIONS hinzu, oder entfernen Sie das Schlüsselwort vollständig.

+1

Flask fügt 'OPTIONS' automatisch hinzu. – davidism

+0

Ja, ich habe das versucht, und es gibt denselben Fehler. –

Verwandte Themen