java - Flash 属性不适用于 https - 适用于 http

标签 java spring https openshift

我有一个本地运行的 Spring Web 应用程序。它工作得非常好,并且在重定向时将 flash 属性完美地传递到另一个 Controller 。

当我在 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 路由,他们不会。

最佳答案

正如 Graham 在评论中所说,这是我的应用程序重定向到 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;
}

关于java - Flash 属性不适用于 https - 适用于 http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54757027/

相关文章:

java - 使用反射调用父类(super class)方法

java - 在 Spring 项目中将 IP 列入白名单

java - Spring Data JPA 和 Projection 为 TupleConverter 获取 ConverterNotFoundException

java - Android 中的安全 HTTP Post

java - 我需要标准化位图并将其存储在 TensorImage 中。有什么办法可以做到这一点吗?

java - 创建井字游戏动画

java - (Java 引用情况)我应该按照 findbugs 工具告诉我的去做吗?

java - 根据编辑请求中的用户角色选择要使用的 pojo

google-chrome - 从 Chrome 的预加载 HSTS 列表中删除站点

php - 合并HTTP和HTTPS URL的社交共享计数