可靠地检测本地客户端,服务器端
Detect local clients reliably, server side
我正在 Karaf 中构建 Java 网络服务器。我想知道 http 调用是否来自同一台机器( = 是本地的)。 Http headers 像 Referer
和 Host
到目前为止在这方面帮助我。
策略就是看headers中出现的URL是否读作localhost
。
这种方法有什么危险?还有更安全的方法吗?
正如 amon 在他的评论中指出的那样,可靠的方法是使用
javax.servlet.http.HttpServletRequest
.
import javax.ws.rs.core.Context;
import javax.servlet.http.HttpServletRequest;
使用上下文注释将 HttpServletRequest 注入您的代码:
@Context private HttpServletRequest req;
然后使用对象从两者之一获取地址:
LOG.info("{}", req.getRemoteHost());
LOG.info("{}", req.getRemoteAddr());
This 回答帮助我了解了细节。
我正在 Karaf 中构建 Java 网络服务器。我想知道 http 调用是否来自同一台机器( = 是本地的)。 Http headers 像 Referer
和 Host
到目前为止在这方面帮助我。
策略就是看headers中出现的URL是否读作localhost
。
这种方法有什么危险?还有更安全的方法吗?
正如 amon 在他的评论中指出的那样,可靠的方法是使用
javax.servlet.http.HttpServletRequest
.
import javax.ws.rs.core.Context;
import javax.servlet.http.HttpServletRequest;
使用上下文注释将 HttpServletRequest 注入您的代码:
@Context private HttpServletRequest req;
然后使用对象从两者之一获取地址:
LOG.info("{}", req.getRemoteHost());
LOG.info("{}", req.getRemoteAddr());
This 回答帮助我了解了细节。