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.