gpt4 book ai didi

java - Wicket 正在更改 requestURL

转载 作者:搜寻专家 更新时间:2023-11-01 03:43:57 26 4
gpt4 key购买 nike

我有一个可以部署在不同环境中的 wicket 应用程序。其中一个环境是 https 代理(我们称之为 P)后面的服务器(我们称之为 S),因此应用程序上的页面被访问为

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"对应时:

在 wicket 1.4 上

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

在 wicket 1.5 上

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

但现在我没有调用任何 setResponsePage() 或类似的调用,它发生在从外部访问正常链接时。

有什么帮助吗?可以使用如图所示的相同解决方案,但我不知道在哪里实现它(我尝试了 IRequestCycleProvider 的方法 get() 但这导致我另一个错误)

最佳答案

我通过编写自己的 IRequestMapper 解决了这个问题,它的行为类似于默认的,但在方法 mapHandler() 上,如果必须的话,将协议(protocol)设置为 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;
}
});

关于java - Wicket 正在更改 requestURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7415466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com