Ich möchte feststellen, ob die Anfrage vom localhost:5000oder foo.herokuapp.comHost kam und welcher Pfad angefordert wurde. Wie erhalte ich diese Informationen zu einer Flaschenanfrage?
Ich möchte feststellen, ob die Anfrage vom localhost:5000oder foo.herokuapp.comHost kam und welcher Pfad angefordert wurde. Wie erhalte ich diese Informationen zu einer Flaschenanfrage?
Antworten:
Sie können die URL in mehreren RequestFeldern überprüfen :
Ein Benutzer fordert die folgende URL an:
http://www.example.com/myapplication/page.html?x=yIn diesem Fall wären die Werte der oben genannten Attribute wie folgt:
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/
Sie können den Host-Teil einfach mit den entsprechenden Teilungen extrahieren.
http://www.example.com/nicht http://www.example.com/myapplication/ base_url zurückhttp://www.example.com/myapplication/
ein anderes Beispiel:
Anfrage:
curl -XGET http://127.0.0.1:5000/alert/dingding/test?x=y
dann:
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
Wenn Sie Python verwenden, würde ich vorschlagen, das Anforderungsobjekt zu untersuchen:
dir(request)
Da das Objekt die Methode dict unterstützt :
request.__dict__
Es kann gedruckt oder gespeichert werden. Ich verwende es, um 404 Codes in Flask zu protokollieren:
@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_urlund als Gegenleistung bekomme ich nur<werkzeug.utils.cached_property object>statt schön formatierthttp://www.example.com/myapplication/. Oder funktioniert diese Funktion auf localhost nicht?