Tôi muốn phát hiện nếu yêu cầu đến từ localhost:5000
hoặc foo.herokuapp.com
máy chủ lưu trữ và đường dẫn nào được yêu cầu. Làm cách nào để biết thông tin này về yêu cầu Flask?
Tôi muốn phát hiện nếu yêu cầu đến từ localhost:5000
hoặc foo.herokuapp.com
máy chủ lưu trữ và đường dẫn nào được yêu cầu. Làm cách nào để biết thông tin này về yêu cầu Flask?
Câu trả lời:
Bạn có thể kiểm tra url thông qua một số Request
trường :
Một người dùng yêu cầu URL sau:
http://www.example.com/myapplication/page.html?x=y
Trong trường hợp này, các giá trị của các thuộc tính được đề cập ở trên sẽ là như sau:
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/
Bạn có thể dễ dàng trích xuất phần máy chủ với các phần tách thích hợp.
http://www.example.com/
không phải là http://www.example.com/myapplication/
return_url trả vềhttp://www.example.com/myapplication/
một vi dụ khac:
yêu cầu:
curl -XGET http://127.0.0.1:5000/alert/dingding/test?x=y
sau đó:
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
Nếu bạn đang sử dụng Python, tôi sẽ đề xuất bằng cách khám phá đối tượng yêu cầu:
dir(request)
Vì đối tượng hỗ trợ phương thức dict :
request.__dict__
Nó có thể được in hoặc lưu. Tôi sử dụng nó để đăng nhập mã 404 trong 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')
Request.root_url
và khi trở về, tôi chỉ nhận được<werkzeug.utils.cached_property object>
thay vì định dạng độc đáohttp://www.example.com/myapplication/
. Hoặc tính năng này không hoạt động trên localhost?