Проблема с URL-адресом редиректа при использовании прокси Zuul
Последние два дня я безуспешно пытался разобраться в странной проблеме перенаправления.
Основываясь на проектах на основе весеннего облака, я настроил Eureka, Zuul и базовый сервис, который работает за Zuul.
У меня есть следующий метод;
@RequestMapping(method = RequestMethod.POST, value = "/register")
public String registerDevice(Principal principal, String response) {
// ...
return "redirect:/account";
}
Форма настраивается для отправки на прокси-URL следующим образом;
POST https://localhost:8443/service/register
(Zuul работает на localhost: 8443).
URL для локальной службы (без прокси) будет;HTTP: // локальный: 9001 / регистр
Вызов POST правильно передается через вышеупомянутый метод, однако местоположение перенаправления, отправляемое в браузер, является непроксифицированным URL-адресом службы;HTTP: // локальный: 9001 / счета
Прокси Zuul определенно отправляет правильныйх-forwarded- * заголовки, поэтому я ожидал бы, что распознаватель представлений в Spring создаст правильное перенаправление на основе значений, перенаправленных в x.
Чтобы доказать, что заголовки отправлены правильно, я перенастроил метод следующим образом;
@RequestMapping(method = RequestMethod.POST, value = "/register")
public void registerDevice(Principal, String response, HttpServletResponse response) {
// ...
String rUrl = ServletUriComponentsBuilder.fromCurrentContextPath().path("/account").build().toUriString();
servletResponse.sendRedirect(rUrl);
}
Который правильно перенаправляет браузер в прокси-папку;https: // локальный: 8443 / сервис / счет
Это ошибка, или это ожидаемое поведение? Я подумал, что использование «redirect:» предназначено для защиты заголовков, передаваемых из прокси