Tôi đang sử dụng wicket 1.5.1, không thể tìm ra điều này.WICKET: cách lấy địa chỉ ip/địa chỉ của khách hàng
public class MyPage extends WebPage {
public MyPage() {
String clientAddress = ...?
Tôi đang sử dụng wicket 1.5.1, không thể tìm ra điều này.WICKET: cách lấy địa chỉ ip/địa chỉ của khách hàng
public class MyPage extends WebPage {
public MyPage() {
String clientAddress = ...?
WebRequest req = (WebRequest) RequestCycle.get().getRequest();
HttpServletRequest httpReq = (HttpServletRequest) req.getContainerRequest();
String clientAddress = httpReq.getRemoteHost();
Subclass WebClientInfo
để cung cấp một phương pháp nào mà các đại biểu về bảo vệ WebClientInfo.getRemoteAddr()
. Sau đó, tạo một phương thức để truy vấn điều này trong một lớp tùy chỉnh RequestCycle
. Trong Wicket 1,3-1,4 tôi đã đạt được điều này bằng cách subclassing RequestCycle
, nhưng với 1,5 có vẻ như mọi thứ đã khác: RequestCycle in Wicket 1.5
WebClientInfo
có lợi thế là truy vấn tham số erquest X-Forwarded-For
, và sẽ trả về địa chỉ IP thích hợp nếu máy chủ của bạn là đằng sau bộ cân bằng tải/proxy sử dụng XFF.
Sử dụng Wicket 6 và 7, bạn có thể làm như sau:
String remoteAddress = ((WebClientInfo)Session.get().getClientInfo())
.getProperties()
.getRemoteAddress();
nên không phải là được 'httpReq.getRemoteAddr()'? –
'getRemoteAddr()' sẽ trả về địa chỉ IP thô, trong khi 'getRemoteHost()' sẽ trả về tên địa chỉ được giải quyết nếu có thể (hoặc IP nếu không). – tetsuo