NanoHTTPD:确定请求的来源

时间:2013-10-12 03:41:41

标签: java nanohttpd

如何确定发起请求的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实现。

1 个答案:

答案 0 :(得分:8)

目前,NanoHTTPD不会暴露原始套接字。有一个请求添加“getSocket()”或类似于会话类,这将允许询问IP地址并解决您正在寻找的问题。给我一些时间来把代码放在一起并检查回来&amp;我们应该让你上路!

[编辑]

在“serve()”方法中,如果您致电

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

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