2

如何确定发起请求的 IP 地址?我当前的代码:

@Override
public Response serve(String uri, Method method,
    Map<String, String> headers, Map<String, String> parms,
    Map<String, String> files) {

    headers.get("origin"); // my current workaround
};

但是任何客户端都可以修改或删除请求标头。因此,这不是获取该信息的正确方法。在 ASP.NET MVC3 中,这可以通过Request.UserHostAddress.

4

1 回答 1

8

现在,NanoHTTPD 不公开原始套接字。有一个请求添加“getSocket()”或类似的会话类,这将允许查询 IP 地址并解决您正在寻找的内容。给我几天的时间来整理代码并回来查看我们应该让你在路上!

[编辑]

在您的“serve()”方法中,如果您调用

Map<String, String> headers = session.getHeaders();

然后,在地图中寻找“remote-addr”或“http-client-ip”,你应该有你需要的。也就是说,在服务器套接字上调用“getInetAddress()”的结果(根据 Java 文档是“此套接字连接到的远程 IP 地址”)。请注意,如果地图中不存在这些标头,则可能取决于您使用的是旧版本的代码。今天发布了 2.0.5 版,它们肯定存在。

于 2013-10-17T12:52:14.760 回答