Java 验证请求主机
我正在开发一个RESTAPI,在某些情况下,我希望确保请求来自后端UI中设置的已知ip。 我试过这个: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
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)地址