ServletUriComponentsBuilder.fromRequest返回http方案而不是https

时间:2019-07-10 21:31:50

标签: spring-mvc

我有一个由前端代码组成的Web应用程序,该代码调用由两个后端模块实现的相同api。此api在JSON对象中返回网址。后端模块都是用spring mvc编写的,但是版本不同。 网址构建是相同的,并且是这样的:

@GetMapping(path = "/app1/menu", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
   public JsonObject getMenu(HttpServletRequest req) throws IOException {
       JsonObject menu = new JsonObject();
       menu.addProperty("href", ServletUriComponentsBuilder.fromRequest(req)
               .replacePath(req.getContextPath())
               .path("/index.html")
               .toUriString());
       return menu;
}

如您所见,此代码只是向传入请求添加一个常量并返回它。 第一个应用程序使用spring mvc 4(准确地说是4.3.5.RELEASE)。 第二个模块使用5.1.4.RELEASE版本。 当所有这些应用程序都部署在负载平衡的服务器(预先装有负载平衡器的2个tomcat实例)和https上时,就会出现问题。 假设对于app1,请求网址是这样的:

https://example.com/context/app1/menu

app1正确返回

https://example.com/context/index.html

对于app2,前端发出的请求为     https://example.com/context/app2/menu

答案是     http://example.com/context/another_index.html

因此它松开了https方案

似乎ServletUriComponentsBuilder.fromRequest的行为已更改? 我(快速承认)查看了git repo中的提交,但还没有 发现任何东西....

0 个答案:

没有答案