ฉันต้องการตรวจสอบว่าคำขอมาจากlocalhost:5000
หรือfoo.herokuapp.com
โฮสต์และขอเส้นทางใด ฉันจะรับข้อมูลเกี่ยวกับคำขอขวดได้อย่างไร
ฉันต้องการตรวจสอบว่าคำขอมาจากlocalhost:5000
หรือfoo.herokuapp.com
โฮสต์และขอเส้นทางใด ฉันจะรับข้อมูลเกี่ยวกับคำขอขวดได้อย่างไร
คำตอบ:
คุณสามารถตรวจสอบ URL ผ่านหลายRequest
ช่อง :
ผู้ใช้ร้องขอ 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
คุณควรลอง:
request.url
มันน่าจะทำงานได้ตลอดเวลาแม้กระทั่งบน localhost (เพิ่งทำได้)
หากคุณใช้ Python ฉันจะแนะนำโดยสำรวจวัตถุคำขอ:
dir(request)
เนื่องจากวัตถุรองรับเมธอดdict :
request.__dict__
มันสามารถพิมพ์หรือบันทึก ฉันใช้เพื่อบันทึกรหัส 404 ใน 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
และเป็นผลตอบแทนที่ฉันได้รับเพียงการจัดรูปแบบแทนที่จะเป็นอย่างดี<werkzeug.utils.cached_property object>
http://www.example.com/myapplication/
หรือคุณสมบัตินี้ไม่ทำงานบน localhost?