在 Heroku 上使用 werkzeug 解析 X-Forwarded-For 获取 ip
Heroku 代理从客户端到服务器的请求,因此您必须解析 X-Forwarded-For 以查找原始 IP 地址。
X-Forwarded-For 的一般格式是:
X-Forwarded-For: client1, proxy1, proxy2
在 Flask 上使用 werkzeug,我试图想出一个解决方案来访问客户端的原始 IP。
有谁知道一个好方法来做到这一点?
谢谢你!
Heroku proxies requests from a client to server, so you have to parse the X-Forwarded-For to find the originating IP address.
The general format of the X-Forwarded-For is:
X-Forwarded-For: client1, proxy1, proxy2
Using werkzeug on flask, I'm trying to come up with a solution in order to access the originating IP of the client.
Does anyone know a good way to do this?
Thank you!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Werkzeug(和 Flask)将标头存储在
werkzeug.datastructs.Headers
的实例中。您应该能够执行以下操作:或者,您可以使用
request.access_route
(感谢@Bastian 指出这一点!):Werkzeug (and Flask) store headers in an instance of
werkzeug.datastructures.Headers
. You should be able to do something like this:Alternately, you could use
request.access_route
(thanks @Bastian for pointing that out!):这就是我在 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中:
在你的views.py中:
This is what I use in Django. See this https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.get_host
Note: At least on Heroku HTTP_X_FORWARDED_FOR will be an array of IP addresses. The first one is the client IP the rest are proxy server IPs.
in settings.py:
in your views.py: