Serverhttprequest#geturi () Изменен после Spring Boot 3.4.2. Как получить старое поведение?JAVA

Программисты JAVA общаются здесь
Anonymous
 Serverhttprequest#geturi () Изменен после Spring Boot 3.4.2. Как получить старое поведение?

Сообщение Anonymous »

У меня есть приложение Spring Boot, с Webflux, которое получает запросы от сервера Kong. Я получаю эти запросы через общий RestController и обрабатываю их по -разному в зависимости от пути запроса. Но недавно, после того, как я обновил версию Spring Boot с 3.3.8 до 3.4.2, путь, который я получаю, не то, что я ожидаю для того же запроса. < /P>
GenericController.java

Код: Выделить всё

@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());
Spring Boot 3.3.8

Код: Выделить всё

> getURI https://my-external-host.kong.com/
> getPath /
Spring Boot 3.4.2

Код: Выделить всё

> getURI https://my-external-host.kong.com/v1/api/service/
> getPath /v1/api/service/
< /code>
Служба Kong настроена с помощью "Strip_path: true", поэтому приложение Spring Boot получает запрос по адресу /. Это можно проверить с помощью Spring Boot Version 3.3.8. Но кажется, что ServerhttpRequest 
отображается только из внешнего запроса. > Дополнительная информация < /strong>
Здесь некоторые заголовки (такие же для обеих версий), которые могут быть полезны для понимания того, что происходит: < /p>

Код: Выделить всё

[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"]
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/794 ... -the-old-b

Вернуться в «JAVA»