Wie setze ich Response-Header in Flask?
Dies ist mein code:
@app.route('/hello', methods=["POST"])
def hello():
resp = make_response()
resp.headers['Access-Control-Allow-Origin'] = '*'
return resp
Jedoch, wenn ich eine Anfrage vom browser an meinen server bekomme ich diese Fehlermeldung:
XMLHttpRequest cannot load http://localhost:5000/hello.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Habe ich auch schon versucht dieser Ansatz, die Einstellung der Antwort-Header "nach" Antrag:
@app.after_request
def add_header(response):
response.headers['Access-Control-Allow-Origin'] = '*'
return response
Kein Würfel. Ich bekomme den gleichen Fehler. Gibt es eine Möglichkeit, setze einfach nur den Antwort-Header in der route-Funktion? Sowas wäre ideal:
@app.route('/hello', methods=["POST"])
def hello(response): # is this a thing??
response.headers['Access-Control-Allow-Origin'] = '*'
return response
aber ich kann nicht finden, jedenfalls dazu. Bitte helfen Sie.
BEARBEITEN
wenn ich curl die url mit einer POST-Anfrage in etwa so:
curl -iX POST http://localhost:5000/hello
Bekomme ich diese Antwort:
HTTP/1.0 500 INTERNAL SERVER ERROR
Content-Type: text/html
Content-Length: 291
Server: Werkzeug/0.9.6 Python/2.7.6
Date: Tue, 16 Sep 2014 03:58:42 GMT
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.</p>
Irgendwelche Ideen?
InformationsquelleAutor der Frage dopatraman | 2014-09-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies tun, ziemlich leicht:
Blick auf Kolben.Antwort und Kolben.make_response()
Aber etwas sagt mir, Sie haben ein anderes problem, weil die
after_request
haben sollten, behandelt Sie korrekt zu.BEARBEITEN
Ich habe gerade bemerkt, dass du bereits mit
make_response
das ist eine der Möglichkeiten, es zu tun. Wie ich schon sagte,after_request
sollte gearbeitet haben. Versuchen Sie schlagen der Endpunkt der via curl und sehen, was die Header sind:Sollten Sie sehen,
Anbetracht der Access-Control-Allow-Origin-header.
EDIT 2
Wie ich vermutete, sind Sie immer eine 500 also Sie sind nicht die Einstellung der Kopf-wie man dachte. Versuchen Sie
app.debug = True
bevor Sie starten Sie die app und versuchen Sie es erneut. Sie sollten eine Ausgabe zeigt Ihnen die Ursache des Problems.Beispiel:
Gibt eine hübsch formatierte html-Fehler-Seite mit dieser an der Unterseite (hilfreich für curl-Befehl)
InformationsquelleAutor der Antwort sberry
Verwenden
make_response
der Kolben etwas wieVom Kolben docs
InformationsquelleAutor der Antwort Devi
Diese Arbeit für mich
InformationsquelleAutor der Antwort German Lopez