Serverhttprequest#getUri () hat sich nach Spring Boot 3.4.2 geändert. Wie bekomme ich das alte Verhalten?Java

Java-Forum
Guest
 Serverhttprequest#getUri () hat sich nach Spring Boot 3.4.2 geändert. Wie bekomme ich das alte Verhalten?

Post by Guest »

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"]

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post