我正在Karaf中构建Java网络服务器。我想知道http调用是否源自同一台计算机(=是本地计算机)。到目前为止,Referer
和Host
之类的Http标头在这方面对我有帮助。
策略是查看标题中出现的URL是否读取localhost
。
这种方法有什么危险?还有更安全的方法吗?
[amon在他的评论中指出,可靠的方法是使用javax.servlet.http.HttpServletRequest
。
javax.servlet.http.HttpServletRequest
使用上下文注释将HttpServletRequest注入您的代码:
import javax.ws.rs.core.Context;
import javax.servlet.http.HttpServletRequest;
然后使用对象从两个之一获取地址:
@Context private HttpServletRequest req;
[LOG.info("{}", req.getRemoteHost());
LOG.info("{}", req.getRemoteAddr());
]的答案帮助我提供了细节。