Closed rowe42 closed 6 years ago
Wir haben nun die Wahl
Ich habe mich für 2. entschieden. Ist allerdings eine unschöne Lösung, da man sich als Filter hinter den Zuul-eigenen Filter (https://github.com/spring-cloud/spring-cloud-netflix/blob/ef755f3ad3b938c2cddea0d18a3cd7e731c88a82/spring-cloud-netflix-zuul/src/main/java/org/springframework/cloud/netflix/zuul/filters/pre/PreDecorationFilter.java) hängen muss und das, was der gerade getan hat, wieder rückgängig machen muss.
Habe jetzt einen Fix programmiert und im API-Gateway in Branch #227 eingecheckt. PR ist an @xdoo gestellt. Zur einfacheren Analyse gibt es für den User-Service auch einen Branch #227, wo man /headers aufrufen kann und die übergebenen Header angezeigt bekommt. Habe @xdoo dafür auch einen PR eingestellt.
Testen kann man es, indem man über einen REST Client via API-Gateway den User-Service aufruft (.../api/user_service/headers) und sich überzeugt, dass der Header "X-Forwarded-Port=80" auch so unverändert dort ankommt.
@grimkroton
Fix ist jetzt im master. Schließe das Issue.
Im Zuge der ersten OpenShift Tests sind wir auf folgendes Problem gestoßen: Wenn im Header des am API-Gateway ankommenden Requests einer der Header
add-proxy-headers: true
bei der entsprechenden Route gesetzt ist, dann hängt Zuul den eigenen Host, Port und Proto mit Komma separiert an. AusX-Forwarded-Port=80
wird dadurch z.B.X-Forwarded-Port=80,8082
wenn der API-Gateway selbst unter 8082 läuft (bzw. im OpenShift wird daraus ebenX-Forwarded-Port=80,80
). Verschiedene Funktionen im Backend kommen damit aber nicht zurecht und werfen Exceptions.@xdoo @FabianWilms @dragonfly28 @ejcsid @Baumfrosch