如何确定发起请求的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
实现。
答案 0 :(得分:8)
目前,NanoHTTPD不会暴露原始套接字。有一个请求添加“getSocket()”或类似于会话类,这将允许询问IP地址并解决您正在寻找的问题。给我一些时间来把代码放在一起并检查回来&amp;我们应该让你上路!
[编辑]
在“serve()”方法中,如果您致电
Map<String, String> headers = session.getHeaders();
然后,在地图中寻找“remote-addr”或“http-client-ip”,你应该得到你需要的东西。也就是说,在服务器套接字上调用“getInetAddress()”的结果(根据Java文档是“此套接字连接到的远程IP地址”)。请注意,如果这些标题不存在于地图中,那么可能是因为您拥有较旧版本的代码。版本2.0.5今天发布,它们肯定存在。