Spring Redirect URL Problem, wenn hinter Zuul Proxy

Ich habe in den letzten 2 Tagen erfolglos versucht, einem seltsamen Umleitungsproblem auf den Grund zu gehen.

Basierend auf den Spring-Cloud-Beispielprojekten habe ich Eureka, Zuul und einen Basisdienst konfiguriert, der hinter Zuul ausgeführt wird.

Ich habe die folgende Methode;

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

Das Formular ist so eingerichtet, dass es wie folgt an die Proxy-URL gesendet wird:

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

(Zuul läuft auf localhost: 8443).

Die URL für den lokalen Dienst (nicht Proxy) wäre;http: // localhost: 9001 / register

Der POST-Aufruf wird gemäß der obigen Methode korrekt weitergeleitet. Der an den Browser gesendete Weiterleitungsspeicherort ist jedoch die nicht weitergeleitete URL des Dienstes.http: // localhost: 9001 / account

Der Zuul-Proxy sendet definitiv das richtige x-weitergeleitet - * headers, daher würde ich erwarten, dass der View Resolver im Frühjahr die richtige Umleitung basierend auf den x-weitergeleiteten Werten erstellt.

Um zu beweisen, dass die Header korrekt gesendet wurden, habe ich die Methode wie folgt neu konfiguriert:

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

Welche den Browser korrekt an den Proxy-Speicherort umleitet;https: // localhost: 8443 / service / account

Ist das ein Fehler oder ist es erwartetes Verhalten? Ich dachte, mit "redirect:" sollten die von einem Proxy übergebenen Forward-Header gewürdigt werden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage