我有一個可以部署在不同環境中的Wicket應用程序。其中這個環境是一個服務器(可以稱之爲S)後面的HTTPS代理(可以稱之爲P),從而Wicket正在更改請求URL
https://P:443/path/mountedPackage/Page?params=values
一切都在檢票1.4,但在遷移到運行良好的應用程序的頁面訪問wicket 1.5,請求URL更改爲
http://P:443/path/mountedPackage/Page?params=values
(https替換爲http)導致「400錯誤請求」錯誤。我不知道爲什麼會發生這種情況,但它會將我的外部鏈接暴露給應用程序。
注意:我提交表單,並調用方法setResponsePage(Page.class)
時,在此之前同樣的問題,我通過設置不同的RequestTarget和手動添加「https」開頭解決它,而不是「HTTP」時,對應:
在檢票口1.4
component.getRequestCycle().setRequestTarget
(new RedirectRequestTarget("newURLWithPropperHttps"));
和檢票1.5
component.getRequestCycle().scheduleRequestHandlerAfterCurrent(new
RedirectRequestHandler("newURLWithPropperHttps"));
,但現在我不調用任何setResponsePage()
或simil當它遵循來自外部的正常鏈接時發生。
任何幫助?可以使用相同的解決方案如圖所示,但我不知道在哪裏實現它(我試過get()
的方法IRequestCycleProvider
,但這導致我anohter錯誤)
我不知道答案,但它聽起來像一個錯誤。 – biziclop
感謝您的評論@biziclop,可能是這樣,我會盡力報告,看看開發人員說什麼。 與此同時,我通過寫我自己的'IRequestMapper'來解決這個問題,它的行爲像默認的那樣,但是方法'mapHandler()'將協議設置爲https(如果必須的話)。 'final IRequestMapper o = getRootRequestMapper(); setRootRequestMapper(新IRequestMapper(){' [...] '@覆蓋 公共地址mapHandler(IRequestHandler R){ 地址U = o.mapHandler(R); 如果(條件) u.setProtocol(」 https「); return u; } });'' – spuas