Modifica dell'URL del sottodominio della connessione HTTP
-
27-10-2019 - |
Domanda
Sottodominio di connessione Https
Sto cercando di configurare la mia applicazione wickets 1.5 con HTTPS.
Ho aggiunto quanto segue alla mia classe di applicazione.
setRootRequestMapper(new HttpsMapper(getRootRequestMapper(), new HttpsConfig(8080, 8443)));
mountPage("/go/securepage", securePage.class);
Poiché ho annotato securePage.class con "@RequireHttps"
, il link carica correttamente la pagina con HTTPS.
Tuttavia, desidero inoltrare tutte le connessioni https a un sottodominio separato.
Quindi, invece di andare a
https://www.example.com/go/securepage
a cui l'utente viene inoltrato
https://securepage.example.com/go/securepage
Come è possibile farlo?
Soluzione
Non ho mai avuto bisogno di farlo, ma guardando i sorgenti di HttpsMapper
sembra che riuscirai a farlo sovrascrivendo 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;
}
Quindi, puoi sovrascriverlo in questo modo:
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;
}
});