【问题标题】:How to get client public ip address in servlet java [duplicate]如何在servlet java中获取客户端公共IP地址[重复]
【发布时间】:2014-08-16 19:56:09
【问题描述】:

我正在使用带有 Java Web 应用程序的 Tomcat 服务器。 我需要来自请求的客户端公共 IP 地址。但我无法理解,我使用了 request.getHeader("x-forwarded-for") request.getRemoteAddr() 方法,但我得到客户端机器本地 IP 地址。

【问题讨论】:

标签: java jsp tomcat servlets servlet-filters


【解决方案1】:

您正在本地网络中运行您的服务器。如果它在野外request.getRemoteAddr()应该做它的工作。

如果您甚至在本地网络中确实需要您的公共 IP,因为它位于路由器后面或使用 NAT 的东西之后,您的本地网络中的公共 IP 可能都相同,这在我看来没有多大意义。即使您想获得公共 IP,也可以使用 ipecho 之类的服务:http://ipecho.net/plain

【讨论】:

  • 如果在本地网络中就无法获取公网IP?
  • 感谢查拉图斯特拉。我需要它,所以我会尝试这项服务。再次感谢。
【解决方案2】:

如果您在 JSP 中构建 Web 应用程序并希望将客户端的公共 IP 地址发送到服务器,您可以使用带有 JSP 的 JavaScript 来实现。

//JavaScript dynamically created to obtain CLIENT MACHINE'S IP ADDRESS
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = "http://www.telize.com/jsonip?callback=DisplayIP";
        document.getElementsByTagName("head")[0].appendChild(script);

        //below given function returns CLIENT MACHINE'S IP ADDRESS to the text box
        function DisplayIP(response)
        {
            document.getElementById("clientip").value = response.ip;
        }

IP 地址将存储在 clientip 中并将其传递给您发布表单的服务器列表并将其传递给 servlet。

【讨论】:

  • 感谢小丑的关注。谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-07-24
  • 2023-03-19
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2014-12-08
  • 2015-05-27
相关资源
最近更新 更多