リクエストがlocalhost:5000
またはfoo.herokuapp.com
ホストからのものか、どのパスがリクエストされたかを検出したいと思います。Flaskリクエストに関するこの情報を取得するにはどうすればよいですか?
リクエストがlocalhost:5000
またはfoo.herokuapp.com
ホストからのものか、どのパスがリクエストされたかを検出したいと思います。Flaskリクエストに関するこの情報を取得するにはどうすればよいですか?
回答:
あなたはいくつかのRequest
フィールドを通してURLを調べることができます:
ユーザーが次のURLをリクエストします。
http://www.example.com/myapplication/page.html?x=y
この場合、上記の属性の値は次のようになります。
path /page.html script_root /myapplication base_url http://www.example.com/myapplication/page.html url http://www.example.com/myapplication/page.html?x=y url_root http://www.example.com/myapplication/
ホストパーツは適切な分割で簡単に抽出できます。
http://www.example.com/
ませんhttp://www.example.com/myapplication/
BASE_URLリターンhttp://www.example.com/myapplication/
もう一つの例:
リクエスト:
curl -XGET http://127.0.0.1:5000/alert/dingding/test?x=y
次に:
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
Pythonを使用している場合は、リクエストオブジェクトを探索することをお勧めします。
dir(request)
オブジェクトはメソッドdictをサポートしているので:
request.__dict__
印刷または保存できます。私はそれを使ってFlaskに404コードを記録します:
@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')
Request.root_url
、<werkzeug.utils.cached_property object>
適切にフォーマットされてhttp://www.example.com/myapplication/
いるのではなく、結果としてのみ返されます。または、この機能はlocalhostでは機能しませんか?