【问题标题】:Client details in webserviceWeb服务中的客户端详细信息
【发布时间】:2010-11-26 18:42:32
【问题描述】:

如何在 java 的 Web 服务中访问客户端详细信息,例如 IP、浏览器等?

【问题讨论】:

  • 你是如何实现服务器端的?你用的是什么框架?
  • 你没有提到你的环境。你会使用网络服务器吗?什么服务器?谁会称您为 Web 服务、浏览器或 Web 服务客户端应用程序?
  • 我有一个调用 Web 服务的 Jsp 页面。 Web 方法需要记录它收到的每个请求。所以我需要客户端IP和浏览器。用户访问该 jsp 页面。服务器是 Tomcat。

标签: java web-services jsp tomcat


【解决方案1】:
String ip = request.getRemoteAddress();
String browser = request.getHeader("User-Agent");

【讨论】:

  • 如果 iam 只使用 Jsp 页面就可以了。
【解决方案2】:

如果您使用的是axis或Jax Rpc,那么您可以通过它来获取IP地址和浏览器,这必须在服务器端存根上完成。

HttpServletRequest httpReq = (HttpServletRequest) MessageContext.getCurrentContext().getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);

String ip = httpReq.getRemoteAddr();

String browser = httpReq.getHeader("User-Agent");

【讨论】:

    【解决方案3】:

    与浏览器相关的信息将在 HTTP 标头中可用,例如:内容类型、版本等。 如果 Web 服务能够获取其客户端的 IP 地址,那么安全性就会受到很大影响。 在客户端将 IP 地址作为参数发送给您的呼叫之前,永远无法访问 IP 地址。

    【讨论】:

    • 为什么会危及安全?服务器总是知道客户端的 IP 地址。否则,它不知道将响应发送到哪里
    • 不,服务器只知道要响应的IP地址,可能是代理服务器或NAT设备的地址。这可能不是客户端的 IP 地址。
    • @janko,当您连接到 Internet 中的服务器时,服务器只知道下一跳地址,而不知道客户端的 IP 地址。如果你在代理后面,那么服务器最多可以知道代理 ip,但不知道代理后面的实际客户端 ip
    猜你喜欢
    • 2011-03-02
    • 1970-01-01
    • 2017-10-02
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 2020-12-02
    • 1970-01-01
    相关资源
    最近更新 更多