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.
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. –
Haben Sie die URL in einer Browser-Adressleiste zuerst getestet, um sicherzustellen, dass sie tatsächlich funktioniert? –