2024-10-06 13:08:56 发布
网友
Heroku将来自客户机的请求代理到服务器,因此您必须解析X-Forwarded-For以找到原始IP地址。
X-forward-For的一般格式为:
X-Forwarded-For: client1, proxy1, proxy2
在flask上使用werkzeug,我试图想出一个解决方案来访问客户端的原始IP。
有人知道怎么做吗?
谢谢你!
这是我在Django用的。看这个https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.get_host
注意:至少在Heroku上,HTTP_X_FORWARDED_FOR将是一个IP地址数组。第一个是客户端IP,其余是代理服务器IP。
在settings.py中:
USE_X_FORWARDED_HOST = True
在您的视图中.py:
if 'HTTP_X_FORWARDED_FOR' in request.META: ip_adds = request.META['HTTP_X_FORWARDED_FOR'].split(",") ip = ip_adds[0] else: ip = request.META['REMOTE_ADDR']
Werkzeug(和Flask)将头存储在^{}实例中。你应该可以这样做:
provided_ips = request.headers.getlist("X-Forwarded-For") # The first entry in the list should be the client's IP.
或者,您可以使用^{}(感谢@Bastian指出这一点!)以下内容:
provided_ips = request.access_route # First entry in the list is the client's IP
这是我在Django用的。看这个https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.get_host
注意:至少在Heroku上,HTTP_X_FORWARDED_FOR将是一个IP地址数组。第一个是客户端IP,其余是代理服务器IP。
在settings.py中:
在您的视图中.py:
Werkzeug(和Flask)将头存储在^{} 实例中。你应该可以这样做:
或者,您可以使用^{} (感谢@Bastian指出这一点!)以下内容:
相关问题 更多 >
编程相关推荐