【问题标题】:NanoHTTPD: determine origin of requestNanoHTTPD:确定请求的来源
【发布时间】:2013-10-12 03:41:41
【问题描述】:

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

【问题讨论】:

    标签: java nanohttpd


    【解决方案1】:

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

    [编辑]

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

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

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

    【讨论】:

    • NanoHTTPD 的作者本人。这一定是我的幸运日。我将等待带有返回套接字的公共函数的更新版本。谢谢。这个问题和“回答”一样好。
    • @Paul Hawke,请好好看看这个stackoverflow.com/questions/23603072/…
    猜你喜欢
    • 1970-01-01
    • 2019-06-21
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 2012-11-13
    • 2018-08-04
    • 1970-01-01
    相关资源
    最近更新 更多