Saya ingin mendeteksi apakah permintaan tersebut berasal dari localhost:5000
atau foo.herokuapp.com
host dan jalur apa yang diminta. Bagaimana cara mendapatkan informasi tentang permintaan Flask ini?
157
Anda dapat memeriksa url melalui beberapa Request
bidang:
Bayangkan aplikasi Anda mendengarkan pada root aplikasi berikut:
http://www.example.com/myapplication
Dan pengguna meminta URI berikut:
http://www.example.com/myapplication/foo/page.html?x=y
Dalam hal ini nilai dari atribut yang disebutkan di atas adalah sebagai berikut:
path /foo/page.html full_path /foo/page.html?x=y script_root /myapplication base_url http://www.example.com/myapplication/foo/page.html url http://www.example.com/myapplication/foo/page.html?x=y url_root http://www.example.com/myapplication/
Anda dapat dengan mudah mengekstrak bagian host dengan pembagian yang sesuai.
Request.root_url
dan sebagai imbalannya saya hanya mendapatkan<werkzeug.utils.cached_property object>
bukan diformat dengan baikhttp://www.example.com/myapplication/
. Atau fitur ini tidak berfungsi di localhost?http://www.example.com/
bukanhttp://www.example.com/myapplication/
base_url kembalihttp://www.example.com/myapplication/
contoh lain:
permintaan:
curl -XGET http://127.0.0.1:5000/alert/dingding/test?x=y
kemudian:
request.method: GET request.url: http://127.0.0.1:5000/alert/dingding/test?x=y request.base_url: http://127.0.0.1:5000/alert/dingding/test request.url_charset: utf-8 request.url_root: http://127.0.0.1:5000/ str(request.url_rule): /alert/dingding/test request.host_url: http://127.0.0.1:5000/ request.host: 127.0.0.1:5000 request.script_root: request.path: /alert/dingding/test request.full_path: /alert/dingding/test?x=y request.args: ImmutableMultiDict([('x', 'y')]) request.args.get('x'): y
sumber
Kamu harus mencobanya:
Seharusnya selalu berfungsi, bahkan di localhost (baru saja melakukannya).
sumber
Jika Anda menggunakan Python, saya sarankan dengan menjelajahi objek permintaan:
dir(request)
Karena objek mendukung metode dikt :
request.__dict__
Itu bisa dicetak atau disimpan. Saya menggunakannya untuk mencatat kode 404 di Flask:
@app.errorhandler(404) def not_found(e): with open("./404.csv", "a") as f: f.write(f'{datetime.datetime.now()},{request.__dict__}\n') return send_file('static/images/Darknet-404-Page-Concept.png', mimetype='image/png')
sumber