加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读