如何解决如何在Tornado中获取客户端的IPv4地址而不是IPv6?
我正尝试使用官方文档https://www.tornadoweb.org/en/stable/httputil.html#tornado.httputil.HTTPServerRequest.remote_ip中提到的龙卷风RequestHandler
类request.remote_ip
变量来获取到龙卷风服务器的传入请求的调用方地址。
我为大多数呼叫者获取了IPv4地址,但是对于一个特定的呼叫者,我获取了IPv6地址。 是否可以获得呼叫者的IPv4地址?这与仅提供IPv6地址的调用方提出的请求有关。
解决方法
这取决于DNS查找的工作方式。让我举例说明:
- 客户在浏览器中输入您网站的地址。
- 浏览器向操作系统询问域的IP地址。
- 操作系统向ISP的服务器发出DNS请求。
- 由于服务器同时支持IPv4和IPv6,因此ISP会发回服务器的IPv6地址。
- 操作系统将IPv6地址提供给浏览器。
- 浏览器向IPv6地址发出请求。
- 该请求是通过IPv6协议发出的,因此客户端也有一个IPv6地址。
如您所见,由ISP决定应使用哪种IP协议。因此,如果客户端正在通过IPv6协议发送请求,则它们将没有IPv4地址。
如果只想支持IPv4,则应关闭服务器的IPv6。
请与您的托管服务提供商联系,或删除服务器的AAAA记录。
,如果远程端通过IPv6连接,则所有可用信息–连接中根本不涉及IPv4。没有通用的方法可以从IPv6地址中获取“该” IPv4地址:远程主机可能没有,可能有或没有与IPv6地址相同的IPv4地址,1个或许多IPv4地址。
如果仅需要IPv4地址,则不允许IPv6连接。更好的是,在您的应用程序中同时支持IPv4和IPv6。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。