by Guest » 12 Feb 2025, 08:34
Ich habe eine Spring -Boot -Anwendung mit WebFlux, die Anfragen von einem Kong -Server empfängt. Ich erhalte diese Anfragen über einen generischen RestController und behandle sie je nach Pfad der Anfrage unterschiedlich. Aber vor kurzem, nachdem ich die Spring -Boot -Version von 3.3.8 auf 3.4.2 aktualisiert habe, ist der Weg, den ich bekomme, nicht das, was ich für dieselbe Anfrage erwarte. < /P>
GenericController.java
Code: Select all
@PostMapping(value = "**", produces = MediaType.APPLICATION_JSON_VALUE)
public Mono genericPost(
@RequestBody byte[] body,
@RequestHeader HttpHeaders headers,
ServerHttpRequest request) {
log.trace("> getURI {}", request.getURI());
log.trace("> getPath {}", request.getPath());
Federschuh 3.3.8
Code: Select all
> getURI https://my-external-host.kong.com/
> getPath /
Federschuh 3.4.2
Code: Select all
> getURI https://my-external-host.kong.com/v1/api/service/
> getPath /v1/api/service/
< /code>
Der Kong -Dienst ist mit "strip_path: true" konfiguriert, sodass die Spring -Boot -Anwendung die Anforderung at /erhält. Dies kann mit Spring Boot Version 3.3.8 überprüft werden. Es scheint jedoch, dass ServerhttpRequest
nur Informationen aus der externen Anforderung anzeigt. > Zusätzliche Informationen < /strong>
Hier einige Header (gleiche für beide Versionen), die nützlich sein können, um zu verstehen, was passiert: < /p>
Code: Select all
[Host:"my-internal-service:8080",
Connection:"keep-alive",
X-Forwarded-For:"xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx",
X-Forwarded-Proto:"https",
X-Forwarded-Host:"my-external-host.kong.com",
X-Forwarded-Port:"443",
X-Forwarded-Path:"/v1/api/service",
X-Forwarded-Prefix:"/v1/api/service",
X-Real-IP:"xxx.xxx.xxx.xxx"]
Ich habe eine Spring -Boot -Anwendung mit WebFlux, die Anfragen von einem Kong -Server empfängt. Ich erhalte diese Anfragen über einen generischen RestController und behandle sie je nach Pfad der Anfrage unterschiedlich. Aber vor kurzem, nachdem ich die Spring -Boot -Version von 3.3.8 auf 3.4.2 aktualisiert habe, ist der Weg, den ich bekomme, nicht das, was ich für dieselbe Anfrage erwarte. < /P>
[b] GenericController.java [/b]
[code]@PostMapping(value = "**", produces = MediaType.APPLICATION_JSON_VALUE)
public Mono genericPost(
@RequestBody byte[] body,
@RequestHeader HttpHeaders headers,
ServerHttpRequest request) {
log.trace("> getURI {}", request.getURI());
log.trace("> getPath {}", request.getPath());
[/code]
[b] Federschuh 3.3.8 [/b]
[code]> getURI https://my-external-host.kong.com/
> getPath /
[/code]
[b] Federschuh 3.4.2 [/b]
[code]> getURI https://my-external-host.kong.com/v1/api/service/
> getPath /v1/api/service/
< /code>
Der Kong -Dienst ist mit "strip_path: true" konfiguriert, sodass die Spring -Boot -Anwendung die Anforderung at /erhält. Dies kann mit Spring Boot Version 3.3.8 überprüft werden. Es scheint jedoch, dass ServerhttpRequest [/code] nur Informationen aus der externen Anforderung anzeigt. > Zusätzliche Informationen < /strong>
Hier einige Header (gleiche für beide Versionen), die nützlich sein können, um zu verstehen, was passiert: < /p>
[code][Host:"my-internal-service:8080",
Connection:"keep-alive",
X-Forwarded-For:"xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx",
X-Forwarded-Proto:"https",
X-Forwarded-Host:"my-external-host.kong.com",
X-Forwarded-Port:"443",
X-Forwarded-Path:"/v1/api/service",
X-Forwarded-Prefix:"/v1/api/service",
X-Real-IP:"xxx.xxx.xxx.xxx"]
[/code]