我想检测请求是否来自localhost:5000或foo.herokuapp.com主机以及请求的路径。如何获取有关 Flask 请求的信息?
			
			172484 次
		
4 回答
            306        
        
		
您可以通过几个Request字段检查 url:
假设您的应用程序正在侦听以下应用程序根目录:
http://www.example.com/myapplication用户请求以下 URI:
http://www.example.com/myapplication/foo/page.html?x=y在这种情况下,上述属性的值如下:
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/
您可以使用适当的拆分轻松提取主机部分。
于 2013-04-12T15:16:00.310   回答
    
    
            278        
        
		
另一个例子:
要求:
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
于 2017-09-12T12:25:02.433   回答
    
    
            11        
        
		
你应该试试:
request.url 
它应该总是工作,即使在本地主机上(刚刚做到了)。
于 2016-04-04T12:56:46.357   回答
    
    
            1        
        
		
如果您使用的是 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')
于 2019-12-03T05:54:47.497   回答