java – Wicket正在更改requestURL
发布时间:2020-12-15 02:28:03 所属栏目:Java 来源:网络整理
导读:我有一个wicket应用程序,可以部署在不同的环境中.其中一个环境是https代理后面的服务器(让我们称之为S)(让我们称之为P),因此应用程序上的页面被访问为 https://P:443/path/mountedPackage/Page?params=values 在wicket 1.4中一切正常,但随着向wicket 1.5的迁
我有一个wicket应用程序,可以部署在不同的环境中.其中一个环境是https代理后面的服务器(让我们称之为S)(让我们称之为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错误请求”错误.我不知道为什么会发生这种情况,但它会破坏我对应用程序的外部链接. 注意:在提交表单并调用方法setResponsePage(Page.class)之前我遇到了同样的问题,我通过设置不同的RequestTarget并在对应时手动添加“https”而不是“http”来解决它: 在wicket 1.4 component.getRequestCycle().setRequestTarget (new RedirectRequestTarget("newURLWithPropperHttps")); 并在wicket 1.5 component.getRequestCycle().scheduleRequestHandlerAfterCurrent(new RedirectRequestHandler("newURLWithPropperHttps")); 但现在我没有调用任何setResponsePage()或类似的东西,当它从外部跟随一个普通的链接时发生. 有帮助吗?可以使用如图所示的相同解决方案,但我不知道在哪里实现它(我已经尝试了IRequestCycleProvider的方法get(),但这导致我出现anohter错误) 解决方法
我通过编写自己的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; } }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |