【问题标题】:spring-cloud-gateway webflux ProxyExchange returns 404spring-cloud-gateway webflux ProxyExchange 返回 404
【发布时间】:2020-03-16 16:53:37
【问题描述】:

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

如果我使用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.gateway.proxy
  • 我的猜测是 RestTemplate 默认会忽略 ssl 错误,而 WebClient 不会。您可以创建一个ProxyExchangeArgumentResolver bean 并适当地配置WebClient。见github.com/spring-cloud/spring-cloud-gateway/blob/…
  • @spencergibb 你的意思是我应该设置属性 spring.cloud.gateway.proxy.ssl.useInsecureTrustManager=true 吗?我试过了,还是不行。
  • 该属性不存在。要执行您想要的操作,您需要复制我链接到的代码。
  • 谢谢@spencergibb。我添加了一个ProxyExchangeArgumentResolver bean,但这仍然不起作用。 bean 代码在这里 (github.com/william726/proxy-exchange-demo/blob/…)。我不确定我是否做错了什么,尤其是。注释。

标签: spring-cloud spring-cloud-gateway


【解决方案1】:

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

proxy.sensitive(HttpHeaders.HOST)

好像ProxyExchange默认会下传http请求头,WebClient的情况下没有默认http头。

【讨论】:

    猜你喜欢
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 2021-12-02
    • 2019-10-06
    • 2020-02-01
    • 2019-06-29
    • 2021-07-23
    相关资源
    最近更新 更多