Problema de URL de redirecionamento de primavera quando atrás do proxy Zuul

Eu tenho tentado chegar ao fundo de um problema de redirecionamento estranho nos últimos 2 dias sem sucesso.

Com base nos projetos de exemplo de primavera em nuvem, configurei o Eureka, o Zuul e um serviço básico que é executado atrás do Zuul.

Eu tenho o seguinte método;

@RequestMapping(method = RequestMethod.POST, value = "/register")
public String registerDevice(Principal principal, String response) {
  // ...
  return "redirect:/account";
}

O formulário está configurado para postar no URL proxy como a seguir;

POST https://localhost:8443/service/register

(O Zuul está sendo executado no host local: 8443).

A URL para o serviço local (sem proxy) seria;http: // localhost: 9001 / register

A chamada POST é submetida a proxy corretamente através do método acima, no entanto, o local de redirecionamento enviado ao navegador é a URL não proxy do serviço;http: // localhost: 9001 / conta

O proxy Zuul está definitivamente enviando o corretox encaminhado- * cabeçalhos, então eu esperaria que o resolvedor de exibição no Spring construa o redirecionamento correto com base nos valores x-forwarded.

Para provar que os cabeçalhos foram enviados corretamente, reconfigurei o método da seguinte maneira;

@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);
}

Que redireciona corretamente o navegador para o local em proxy;https: // localhost: 8443 / service / account

Isso é um bug ou é um comportamento esperado? Eu pensei que usando "redirecionar:" foi feito para honrar os cabeçalhos de encaminhamento passados de um proxy.

questionAnswers(2)

yourAnswerToTheQuestion