Spring Cloud Gateway拦截所有传入和传出的请求

问题描述

它将是一个后端应用程序,它公开一些REST终结点并可以调用其他后端。 该应用程序在一台主机上运行。我想在同一主机上运行其他应用程序-Sidecar。这应该: 1)Sidecar应该接收后端应用程序的所有传出流量,以添加其他身份验证标头。 2)Sidecar应该会收到所有传入流量,并检查auth标头,然后转发到Backend应用。

Sidecar应该是spring-boot应用程序。我将选择-Spring云网关。

解决1)我将通过代理调用所有后端应用程序请求-代理是Sidecar cloud GW 解决2)我将只公开接收所有传入流量并转发到后端应用的Sidecar端点/ **

当后端应用程序启动传出请求并将Sidecar用作代理时,下一个代码有效

@SpringBootApplication
@RestController
public class DemoApplication {

public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class,args);
}

@RequestMapping("/**")
public Mono<ResponseEntity<byte[]>> proxy(ProxyExchange<byte[]> proxy,ServerHttpRequest serverHttpRequest) throws Exception {
    return proxy.uri(serverHttpRequest.getURI().toString()).forward();
}
}

同时,以上代码将拦截所有外部传入请求,并将其再次发送到Sidecar,从而导致无限循环。

有人建议写Sidecar(Spring云网关),一方面将它用作传出请求的代理,另一方面将所有传入请求转发到后端应用程序

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)