Https Connection子域
我希望用HTTPS设置我的wickets 1.5应用程序。
我已将以下内容添加到我的应用程序类中。
setRootRequestMapper(new HttpsMapper(getRootRequestMapper(), new HttpsConfig(8080, 8443)));
mountPage("/go/securepage", securePage.class);
由于我使用"@RequireHttps"
注释了securePage.class,因此链接正确地使用HTTPS加载页面。
但是我想将所有https连接转发到单独的子域。
所以不要去
用户转发到 https://www.example.com/go/securepage
https://securepage.example.com/go/securepage
如何做到这一点?
答案 0 :(得分:3)
我从来不需要这样做,但是看看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;
}
});