#spring #spring-boot #spring-cloud #spring-cloud-gateway
Вопрос:
Я использую Spring Cloud(Hoxton.SR10) с загрузкой Spring (2.2.6.РЕЛИЗ)
Я регистрирую свои услуги на сервере Eureka 8761
и у меня есть шлюз-сервис для управления маршрутизацией (на данный момент без какой-либо безопасности).
# profil DEV
---
spring:
profiles: dev
cloud:
gateway:
routes:
- id: pr-api-id
uri: http://localhost:8086/
predicates:
- Path=/api/**
и это то, что pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
</dependency>
<!-- Spring cloud eureka client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
когда я звоню localhost:9092/api/v0
(у меня есть служба localhost:8086/v0
, которая работает нормально), она должна возвращать мне тот же результат localhost:8086/v0
du для маршрутизации spring cloud gateway
но я получил ошибку http 404
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Mon Sep 27 12:46:20 CEST 2021
There was an unexpected error (type=Not Found, status=404).
No message available
основной класс шлюза java
@SpringBootApplication
@EnableEurekaClient
public class GatewayApplication {
Комментарии:
1. Согласно вашему сообщению, шлюз отправляет запрос на локальный хост:8086/api/v0. Шлюз по умолчанию не изменяет запрос. Вам нужно изменить путь. Фильтр stripPrefix 1 должен работать
2. спасибо за ваш ответ, но он не работает маршруты: — идентификатор: pr-api-идентификатор uri: локальный хост:8086 предикаты: — Путь=/api/** фильтры: — stripPrefix=1
Ответ №1:
Я, наконец, решил свою проблему, добавив конфигурацию cors в свой конфигурационный файл.
spring:
cloud:
gateway:
default-filters:
- DedupeResponseHeader=Access-Control-Allow-Origin
globalcors:
cors-configurations:
"[/**]":
allowCredentials: true
allowedOrigins: "*"
allowedHeaders: "Origin, X-Requested-With, Content-Type, Accept, Content-Length, TOKEN, Authorization"
allowedMethods: "GET, POST, PATCH, PUT, DELETE, OPTIONS"
maxAge: 3628800