Ini kode saya:
@app.route('/hello', methods=["POST"])
def hello():
resp = make_response()
resp.headers['Access-Control-Allow-Origin'] = '*'
return resp
Namun, ketika saya membuat permintaan dari browser ke server saya, saya mendapatkan kesalahan ini:
XMLHttpRequest cannot load http://localhost:5000/hello.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Saya juga mencoba pendekatan ini, menyetel header tanggapan "setelah" permintaan:
@app.after_request
def add_header(response):
response.headers['Access-Control-Allow-Origin'] = '*'
return response
Tidak ada dadu. Saya mendapatkan kesalahan yang sama. Adakah cara untuk menyetel header respons di fungsi rute? Sesuatu seperti ini akan ideal:
@app.route('/hello', methods=["POST"])
def hello(response): # is this a thing??
response.headers['Access-Control-Allow-Origin'] = '*'
return response
tetapi saya tidak dapat menemukan cara untuk melakukan ini. Tolong bantu.
EDIT
jika saya menggulung url dengan permintaan POST seperti ini:
curl -iX POST http://localhost:5000/hello
Saya mendapatkan tanggapan ini:
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>
Ada ide?
Ini bekerja untuk saya
sumber
return Response(headers={'Access-Control-Allow-Origin':'*'})
yang menurut saya lebih bersih.Beginilah cara menambahkan header saya di aplikasi labu saya dan itu bekerja dengan sempurna
sumber
Kita dapat mengatur header respon dalam aplikasi Python Flask menggunakan konteks aplikasi Flask menggunakan
flask.g
Cara menyetel header respons dalam konteks aplikasi Flask menggunakan
flask.g
thread safe dan dapat digunakan untuk menyetel atribut kustom & dinamis dari file aplikasi mana pun, ini sangat membantu jika kita menyetel header respons kustom / dinamis dari kelas helper mana pun, yang dapat juga dapat diakses dari file lain (katakanlah seperti middleware, dll), iniflask.g
bersifat global & valid untuk utas permintaan itu saja.Katakanlah jika saya ingin membaca header respons dari panggilan api / http lain yang dipanggil dari aplikasi ini, lalu ekstrak apa pun & setel sebagai header respons untuk aplikasi ini.
Kode Sampel: file:
helper.py
mengajukan:
middleware.py
Memanggil middleware dari kelas utama
file:
main.py
sumber