【问题标题】:JBoss Netty getting User IP (Http Request)JBoss Netty 获取用户 IP(Http 请求)
【发布时间】:2011-09-25 02:59:50
【问题描述】:

我需要为我们的 JBoss Netty 服务器的每个请求记录用户 ip ady。我想:

MessageEvent e;
e.getChannel().getRemoteAddress();

是正确的答案,但这总是返回 127.0.0.1 并且我需要实际的客户端 IP。来自 Rails,我检查了他们如何从文档中找到 ip:

确定原始 IP 地址。 REMOTE_ADDR 是标准但会 如果用户在代理后面,则失败。 HTTP_CLIENT_IP 和/或 HTTP_X_FORWARDED_FOR 由设置 代理所以检查这些如果 REMOTE_ADDR 是一个代理。 HTTP_X_FORWARDED_FOR 可能是一个逗号- 多个情况下的分隔列表 链式代理;最后一个地址 不可信的是 原始 IP。

那么我应该检查 Netty 中的所有标题还是有更简单的方法?

【问题讨论】:

    标签: ip netty


    【解决方案1】:

    好的,我有答案了。使用 ChannelHandlerContext 而不是 MessageEvent 可以解决问题。

    SocketAddress remoteAddress = ctx.getChannel().getRemoteAddress();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      • 2015-08-31
      • 2017-04-06
      • 2012-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多