我正在使用Wicket 1.5.1,但无法解决这个问题。
public class MyPage extends WebPage {
public MyPage() {
String clientAddress = ...?
WebRequest req = (WebRequest) RequestCycle.get().getRequest();
HttpServletRequest httpReq = (HttpServletRequest) req.getContainerRequest();
String clientAddress = httpReq.getRemoteHost();
WebClientInfo
类提供一个公共方法,该方法委托保护的WebClientInfo.getRemoteAddr()
方法。然后创建一个方法在自定义的RequestCycle
类中查询它。在Wicket 1.3-1.4中,我通过子类化RequestCycle
来实现这一点,但是在1.5中似乎有所不同:Wicket 1.5中的RequestCycle。
WebClientInfo
具有查询X-Forwarded-For
请求参数的优点,并且如果您的服务器在代理/负载均衡器后面使用XFF,它将返回正确的IP地址。String remoteAddress = ((WebClientInfo)Session.get().getClientInfo())
.getProperties()
.getRemoteAddress();
httpReq.getRemoteAddr()
吗? - Xavi LópezgetRemoteAddr()
将返回原始IP地址,而getRemoteHost()
将尽可能返回已解析的地址名称(如果无法解析则返回IP)。 - tetsuo