【问题标题】:How can I get client side information using either Javascript or Java Servlets?如何使用 Javascript 或 Java Servlet 获取客户端信息?
【发布时间】:2011-02-10 11:26:32
【问题描述】:

如何使用 Javascript 或 Java Servlet 获取客户端信息?

客户端信息,例如客户端的计算机名称、IP 地址等。

提前致谢。

【问题讨论】:

    标签: java javascript servlets


    【解决方案1】:

    根据您的网络环境(例如,如果这是在 Intranet 上),您可以通过对客户端的 IP 地址执行反向 DNS 或创建等效的服务器服务来获取客户端名称。

    【讨论】:

      【解决方案2】:

      通过JS获取用户IP

      var ip = '<!--#echo var="REMOTE_ADDR"-->';
      

      虽然我不确定计算机名称,但我认为它必须涉及 ActiveX。它曾经可以通过 IE 中的 ActivexObject 实现。不确定它是否可能,高度怀疑它,因为它一点也不安全。

      【讨论】:

      • 只有在有问题的服务器支持服务器端 HTML 包含时才有效。您显示的构造是特定于 IIS 的。我不希望 OP 在 IIS 上运行 servlet。此外,ActiveX 方法不适用于除 MSIE 之外的所有其他浏览器,即使在 MSIE 上,默认情况下也无法使用,您必须降低安全设置。
      • 是的,我刚刚发现您必须将安全性降低到可笑的低水平。所以,坚持使用 Java Servlet。
      【解决方案3】:

      您可以从 servlet 中的 HTTP 请求标头中获取一些信息,例如 user-agent(以便您知道客户端正在使用哪个浏览器(或者让我们认为它正在使用))和远程- addr(客户端的 IP 地址(或代理的 IP 地址,如果客户端正在使用它))。

      String userAgent = request.getHeader("user-agent"); // Browser identifier.
      String remoteAddr = request.getRemoteAddr(); // IP address.
      

      您无法使用 Javascript 访问系统环境变量。那将是一个安全漏洞。有一些使用 ActiveX 的方法,但这只适用于由 Redmond 的一个团队开发的特定 Web 浏览器,而且客户端仍需要降低其安全设置以允许它运行。这是一个很大的禁忌。

      获取计算机名称的唯一方法是运行由网页提供服务的客户端应用程序,让该客户端应用程序嗅探它并将其发送到服务器端。例如,Java Applet 分别使用 System.getProperty("COMPUTERNAME")java.net.URL。但是,您需要对其进行签名,否则它也会提示安全警告。

      【讨论】:

        猜你喜欢
        • 2012-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-01
        • 2013-04-03
        • 2014-03-03
        • 2022-06-17
        • 2020-03-22
        相关资源
        最近更新 更多