Java 验证请求主机

Java 验证请求主机,java,rest,Java,Rest,我正在开发一个RESTAPI,在某些情况下,我希望确保请求来自后端UI中设置的已知ip。 我试过这个: try { URL url = new URL(allowedHostname); InetAddress[] allowedIps = InetAddress.getAllByName(url.getHost()); for (InetAddress host : allowedIps) { if (requesterIp.equals(host.ge

我正在开发一个RESTAPI,在某些情况下,我希望确保请求来自后端UI中设置的已知ip。 我试过这个:

try {
    URL url = new URL(allowedHostname);
    InetAddress[] allowedIps = InetAddress.getAllByName(url.getHost());
    for (InetAddress host : allowedIps) {
        if (requesterIp.equals(host.getHostAddress())) {
            return true;
        }
    }
} catch (UnknownHostException e) {
    logger.warn("[validateHostname] ", e);
}
return false;
其中allowedHostname=request.getRemoteAddr()

但它似乎不起作用。 我不想只验证主机名,因为用另一台主机的名称进行请求相对容易

编辑

requesterIp=request.getRemoteAddr()


allowedHostname=在后端UI中设置的预定义url

您的serlvet容器或appserver很可能位于代理之后。要获得正确的地址,您需要配置代理以转发远程ip地址

字符串getRemoteAddr()

返回发送请求的客户端或最后一个代理的Internet协议(IP)地址