2011-10-20 96 views
2

Https連接子域https連接子站點URL更改

Im尋求使用HTTPS設置我的wickets 1.5應用程序。

我已將以下內容添加到我的應用程序類中。

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

如何才能做到這一點?

回答

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; 
    } 
}); 
+0

優秀王子約翰·衛斯理,這就是工作了魅力。 – Fergal

+0

對不起,哈維洛佩斯,:-) – Fergal