#java #url #wicket #wicketstuff
#java #URL #калитка #wicket stuff
Вопрос:
Поддомен соединения Https
Я хочу настроить свое приложение wicket 1.5 с помощью HTTPS.
Я добавил следующее в свой класс приложения.
setRootRequestMapper(new HttpsMapper(getRootRequestMapper(), new HttpsConfig(8080, 8443)));
mountPage("/go/securepage", securePage.class);
Поскольку я прокомментировал securePage.class с "@RequireHttps"
ссылкой правильно загружается страница с HTTPS.
Однако я хочу перенаправить все https-соединения на отдельный поддомен.
Поэтому вместо того, чтобы перейти к
https://www.example.com/go/securepage
пользователь перенаправляется на https://securepage.example.com/go/securepage
Как это можно сделать?
Ответ №1:
Мне никогда не нужно было этого делать, но, глядя на источники HttpsMapper
, кажется, что вы сможете это сделать, переопределив HttpsMapper.mapHandler()
.
public Url mapHandler(IRequestHandler requestHandler) {
Url url = delegate.mapHandler(requestHandler);
switch (checker.getProtocol(requestHandler)){
case HTTP :
url.setProtocol("http");
url.setPort(httpsConfig.getHttpPort());
break;
case HTTPS :
url.setProtocol("https");
url.setPort(httpsConfig.getHttpsPort());
break;
}
return url;
}
Итак, вы можете переопределить его следующим образом:
setRootRequestMapper(new HttpsMapper(getRootRequestMapper(), new HttpsConfig(8080, 8443)){
@Override
public Url mapHandler(IRequestHandler requestHandler) {
Url url = super.mapHandler(requestHandler);
if ("https".equals(url.getProtocol)){
// Force the HostName for HTTPS requests
url.setHost("securepage.example.com");
}
return url;
}
});