Flash-атрибуты не работают через https - работает с http - PullRequest
0 голосов
/ 19 февраля 2019

У меня весеннее веб-приложение, работающее локально.Он прекрасно работает и передает атрибуты flash через другой контроллер при перенаправлении.

Когда я выбрасываю это в openshift, функциональность атрибута flash перестает работать вместе при использовании https-маршрута.Если я использую http-маршрут, он все равно работает нормально.

Это мой метод сквозного перенаправления, он принимает идентификатор в пути, выполняет некоторую логику и перенаправляет на конечную точку / 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 и передает someVariable через атрибуты flash в / 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, они не делают.

1 Ответ

0 голосов
/ 19 февраля 2019

Как сказал Грэм в комментариях, проблема была в том, что мое приложение перенаправляло на 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;
}
...