Калитка меняет запросURL - PullRequest
       3

Калитка меняет запросURL

4 голосов
/ 14 сентября 2011

У меня есть приложение калитки, которое можно развернуть в разных средах. Одна из таких сред - это сервер (назовем его S) за прокси-сервером https (назовем его P), поэтому доступ к страницам приложения осуществляется как

https://P:443/path/mountedPackage/Page?params=values

В wicket 1.4 все работало нормально, но при переходе на wicket 1.5 URL запроса изменился на

http://P:443/path/mountedPackage/Page?params=values

(https заменяется на http), что приводит к ошибке «400 Bad Request». Я не знаю, почему это происходит, но это нарушает мои внешние ссылки на приложение.

ПРИМЕЧАНИЕ. У меня была такая же проблема, прежде чем при отправке формы и вызове метода setResponsePage(Page.class), и я решил ее, установив другую RequestTarget и добавив вручную «https» вместо «http», когда соответствует:

в калитке 1.4

component.getRequestCycle().setRequestTarget
      (new RedirectRequestTarget("newURLWithPropperHttps"));

и в калитке 1,5

component.getRequestCycle().scheduleRequestHandlerAfterCurrent(new 
    RedirectRequestHandler("newURLWithPropperHttps"));

но сейчас я не звоню ни на один setResponsePage() или что-то подобное, это происходит при переходе по обычной ссылке извне.

Любая помощь? Можно использовать то же решение, как показано, но я не знаю, где его реализовать (я пробовал метод get() из IRequestCycleProvider, но это приводит меня к другой ошибке)

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

Я исправил проблему, написав свой собственный IRequestMapper, который действует как стандартный, но при методе mapHandler() устанавливает протокол на https, если он должен.

final IRequestMapper o=getRootRequestMapper();

setRootRequestMapper(new IRequestMapper() {
   [...] 
   @Override
   public Url mapHandler(IRequestHandler r) {
       Url u=o.mapHandler(r);
       if (condition)
          u.setProtocol("https");
       return u;
   }
});
0 голосов
/ 22 сентября 2011

Ознакомьтесь с этим разделом руководства по миграции Wicket 1.5. Надеюсь, это поможет.

https://cwiki.apache.org/WICKET/migration-to-wicket-15.html#MigrationtoWicket1.5-Switchingto%252Ffromsecuredcommunicationoverhttps

...