Spring Cloud Gateway возвращает ошибку HTML вместо ошибки ретрансляции службыJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring Cloud Gateway возвращает ошибку HTML вместо ошибки ретрансляции службы

Сообщение Anonymous »

Я использую Spring Cloud Gateway (MVC) в качестве BFF между моим интерфейсом (SPA) и сервером.
Все работает как положено, но если серверы возвращают ошибку (например, 409),
шлюз возвращает 500 с HTML в качестве ответа.
Копав глубже, я обнаружил следующую ошибку:
2024-10-23T16:30:47.804+02:00 ERROR 31792 --- [edepot-api-gateway] [nio-7081-exec-6] o.a.c.c.C.[Tomcat].[localhost] : Exception Processing [ErrorPage[errorCode=0, location=/error]]

jakarta.servlet.ServletException: Request processing failed: org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://localhost:4200/error": http://localhost:4200/error


что вызвано:
java.io.FileNotFoundException: http://localhost:4200/error

Но ошибка от бэкэнда получена правильно (логи перед приведенным выше):
org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://localhost:8080/api/x": Server returned HTTP response code: 409 for URL: http://localhost:8080/api/x

Интересно, связано ли это как-то с обработкой ошибок Tomcat или неправильной настройкой шлюза?
Странно, что он возвращает HTML, а не JSON.
Изображение

Вот конфигурация моего шлюза:
spring.cloud.gateway.mvc.routes[0].id=api
spring.cloud.gateway.mvc.routes[0].uri=${backend-uri}
spring.cloud.gateway.mvc.routes[0].predicates[0]=Path=/api/**
spring.cloud.gateway.mvc.routes[0].filters[0].name=DedupeResponseHeader
spring.cloud.gateway.mvc.routes[0].filters[0].args[name]=Access-Control-Allow-Credentials Access-Control-Allow-Origin
spring.cloud.gateway.mvc.routes[0].filters[1].name=TokenRelay

//spring.cloud.gateway.mvc.routes[1] irrelevant

#Frontend routes
spring.cloud.gateway.mvc.routes[2].id=frontend
spring.cloud.gateway.mvc.routes[2].uri=${frontend-uri}
spring.cloud.gateway.mvc.routes[2].predicates=Path=/**
# Forwarding support
spring.cloud.gateway.mvc.http-client.type=autodetect
spring.cloud.gateway.mvc.http-client.connect-timeout=60s
spring.cloud.gateway.mvc.http-client.read-timeout=60s
#spring.cloud.mvc.discovery.enabled=true



Подробнее здесь: https://stackoverflow.com/questions/791 ... vice-error
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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