java - Flash 属性不适用于 https - 适用于 http
问题描述
我有一个在本地运行的 spring webapp。它工作得很好,并且可以完美地将 Flash 属性传递给重定向时的另一个控制器。
当我在 openshift 上抛出这个时,使用 https 路由时 flash 属性功能会停止工作。但是,如果我使用 http 路由,它仍然可以正常工作。
这是我的重定向传递方法,它在路径中接收一个 id,执行一些逻辑并重定向到 /foo 端点,通过 someVariable。
@GetMapping("/foo/{someId}")
public ModelAndView redirectFoo(@RequestHeader HttpHeaders headers, @PathVariable(value = "someId") String someId, RedirectAttributes attributes) {
//..some logic
attributes.addFlashAttribute("someVariable", someVariable);
return new ModelAndView("redirect:/foo");
}
redirectFoo 重定向到 /foo 并通过 flash 属性将 someVariable 传递给 /foo
@GetMapping("/foo")
public ModelAndView get(@RequestHeader HttpHeaders headers, @ModelAttribute("someVariable") String someVariable) {
//...some logic with someVariable...
return new ModelAndView("foo");
}
这一切都在本地工作得很好。但是当我把它放在 openshift 上时,它就不能正常工作。
*编辑:这似乎不是 openshift 问题,而是 https 问题。如果我使用 http 路由,则 flash 属性可以正常工作。如果我使用 https 路由,他们不会。
解决方案
正如格雷厄姆在评论中所说,我的应用程序重定向到http
而不是https
. 为了解决这个问题,我只需要将重定向方法更改为
@GetMapping("/foo/{someId}")
public RedirectView redirectFoo(@RequestHeader HttpHeaders headers, @PathVariable(value = "someId") String someId, RedirectAttributes attributes) {
//..some logic
attributes.addFlashAttribute("someVariable", someVariable);
RedirectView redirectView = new RedirectView("/foo");
redirectView.setHttp10Compatible(false);
return redirectView;
}
推荐阅读
- c# - 暂时限制玩家移动到地图的某个区域 Unity 游戏开发 C#
- matlab - 使用 CPLEX/AMPL 解决 SOCP 问题的速度比使用 CPLEX/MATLAB 解决时快 10 倍,为什么?
- python - beautifulsoup4 一直打印无
- pytorch - torch.mul 导致 param.grad 为 NoneType
- android - 在 ACTION_BOOT_COMPLETED 之后,为什么 AlarmManager 会立即运行?
- javascript - 如何在不单击搜索按钮的情况下创建搜索功能?
- swiftui - 如何处理 swiftui @State optional unwrap
- python - 如何与 Open CV 中的 BGR 图像像素值进行比较?
- java - 使用@IdClass 休眠一个实体的@ManyToOne
- ios - 为什么这个 SwiftUI 代码会导致编译器超时