spring-cloud-gateway webflux ProxyExchange返回404

问题描述 投票:0回答:1

我想用spring-cloud-gateway创建一个简单的代理和聚合服务器。我正在使用依赖项spring-cloud-gateway-webflux和ProxyExchange来做到这一点。我在本地主机中启动该应用程序,然后从浏览器启动该应用程序,但是它返回未找到的404。

[如果我使用spring-cloud-gateway-mvc而不是spring-cloud-gateway-webflux,则代理可以正常工作,并且我可以在本地主机中浏览stackoverflow。但是我仍然想找出为什么spring-cloud-gateway-webflux无法正常工作。

任何人都可以指出我所缺少的东西吗?

控制器:

@RestController
public class RouteController {
    @RequestMapping(value="/**", method={ RequestMethod.GET, RequestMethod.POST })
    public Mono<ResponseEntity<byte[]>> proxy(ServerHttpRequest request, ServerHttpResponse response, ProxyExchange<byte[]> proxy) throws Exception {
        String path = proxy.path("/");
        if (request.getMethodValue().startsWith("GET")) {
            return proxy.uri("https://stackoverflow.com/" + path).get();
        } else {
            return proxy.uri("https://stackoverflow.com/" + path).post();
        }
    }
}

application.yml:

server:
  port: 8080

我尝试将以下内容添加到application.yml,但它不起作用。

spring:
  cloud:
    gateway:
      httpclient:
        ssl:
          useInsecureTrustManager: true
spring-cloud spring-cloud-gateway
1个回答
0
投票

在我的情况下,这是http标头的问题。添加以下代码,然后一切对我有用。

proxy.sensitive(HttpHeaders.HOST)

似乎ProxyExchange在默认情况下将传递HTTP请求标头,对于WebClient,没有默认的HTTP标头。

© www.soinside.com 2019 - 2024. All rights reserved.