问题标签 [spring-cloud-gateway]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 使用带有 oauth2 的 spring 云网关
我在使用 Spring Cloud Gateway 时遇到问题
是否有任何依赖项直接或递归调用 spring-boot-starter-tomcat
它不起作用,因为它将启动嵌入式 tomcat 服务器而不是 spring 云网关使用的 netty 服务器
我开始通过排除这个依赖来解决这个问题
spring 云网关成功运行
但有时我想使用 spring-cloud-starter-oauth2 来使用 @EnableOAuth2Sso
我开始使用
那时我面临着抛出异常的大问题
原因:java.lang.IllegalStateException:无法自省类 org.springframework.security.oauth2.config.annotation.web.configuration.OAuth2ClientConfiguration 上的注释方法......
引起:java.lang.NoClassDefFoundError: javax/servlet/Filter
spring-cloud - Spring Cloud Gateway 注入头
在 GatewayFilter 中,我试图将标头注入到请求中,如下所示。
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
//DO SOME AUTHORIZATION OPERATIONS
String jwt = "xxxxx"
exchange.getRequest().getHeaders().add("headerkey", jwt);
return chain.filter(exchange);
}
但我收到以下错误:
spring-boot - 具有 SSL 的 Spring Cloud Gateway 无法按名称路由到服务
我在 Spring Cloud Gateway 服务上启用了 SSL,然后路由,例如
停止正常工作。如果我将 uri 更改为真实地址,例如http://localhost:8001
路由工作正常。我使用网关版本 2.0.0.RC1。谁能解释如何使用 Eureka 数据 + SSL 设置 Spring Cloud Gateway + 路由?
spring-webflux - 如何使用 spring webflux 读取请求正文
我正在使用 Spring 5、Netty 和 Spring webflux 来开发 API 网关。有时我希望网关停止请求,但我也想读取请求的主体以记录它,例如并向客户端返回错误。
我尝试通过订阅正文在 WebFilter 中执行此操作。
当我这样做时,它在正文内容很小的情况下起作用。但是当我有一个大婴儿时,只读取通量的第一个元素,所以我不能拥有整个身体。知道怎么做吗?
spring-cloud - Spring Cloud Gateway - 基于Header的重定向
仅使用 Spring Cloud Gateway,我目前正在使用以下路由(在 Kotlin 中定义)代理远程站点:
效果很好。如果我们将 设置proxiedRemote
为https://www.google.com
,这会很好,直到我们尝试加载外部资源(如图像)。
问题是这样的:
http://localhost:8081/logos/doodles/2018/**
真的应该出去:
http://localhost:8081/proxgoo/logos/doodles/2018/**
我在想,如果我可以重定向所有内容,Referer标头http://localhost:8081/proxgoo/
回到代理路由,那么这就是我所需要的:
所以,实际的问题。我认为以下配置将使用请求标头Referer =重定向所有内容http://localhost:8081/proxgoo/
,但它没有选择它。我做了什么傻事吗?
spring - 如何在提交之前修改 Spring Cloud Gateway 中的响应正文
我将 Spring Cloud Gateway 与 Spring 5、Spring Reactor 和 Netty 一起用于一个项目。对于发送到网关的每个请求,我想在响应发送到客户端之前做一些事情。我发现最好的方法是使用 beforeCommit 方法向响应中添加一个操作。
我首先尝试了这种方法:
并尝试在异常处理程序中处理异常:
当我这样做时,当我尝试修改内容长度时会出现异常。如果我了解情况。我不能再在我的处理程序中修改响应,因为它已经提交了。所以我尝试了另一种解决方案,并尝试在提交之前修改我执行的操作中的响应:
这次我没有任何异常,我可以修改内容长度但我不能修改响应的正文。
那么有人知道是否可以这样做以及如何?
spring-cloud - 使用 Spring Cloud Gateway 的简单网关 - ProxyExchange
我想使用 spring cloud 编写一个简单的网关,以便对第三方的请求看起来来自我的服务(就像我过去使用 Zuul 所做的那样)。
github页面上的示例以及官方文档中的示例似乎正是我想要的。即一个简单的控制器路由,将所有请求代理到给定路由:
但我遇到的问题是,人工制品spring-cloud-starter-gateway
不包括org.springframework.cloud.gateway.mvc.ProxyExchange
.
要获得ProxyExchange
,我需要包含与 .spring-cloud-gateway-mvc
不兼容的人工制品spring-cloud-starter-gateway
。将这两件事放在一起会导致以下错误:
因此,我不得不使用以下两个依赖项来使基本网关正常工作:
spring-cloud-gateway
spring-cloud-gateway-mvc
哪个,工作正常,直到我需要org.springframework.cloud.gateway.filter.*
在项目的其他地方使用这些包,这意味着我需要包括:
spring-cloud-gateway-core
, 或者spring-cloud-starter-gateway
这意味着我又回到了不兼容横幅。
spring-cloud-starter-gateway
正如文档所暗示的那样,是否可以仅使用依赖项来使用简单的 API 网关功能?我正在使用的版本2.0.0.RC1。
java - 具有不同依赖关系的两种实现的最大可重用性
我的任务包括将 API 网关从 Zuul 迁移到 Spring Cloud Gateway。目前有两个主要版本:1.0.1.RELEASE 和 2.0.0.RC1。第一个版本非常基础,我必须手动实现与速率限制、身份验证等相关的过滤器......
而第二个版本具有我们需要的所有功能,并具有完整的 YML 支持。我们公司有严格的规定,永远不要使用 beta 或 RC,而且我们需要在几周内投入生产网关的第一个版本,所以没有足够的时间等待版本 2 的最终发布。
我的团队负责人特别要求我制作 2 个版本,分别使用 SCG 的 1.0.1 和 2.0.0 版本。您如何实现模块以实现最大的可重用性?我的意思是我希望在两个版本之间切换尽可能简单,并且我想尽可能多地重用逻辑。我想到的第一件事就是创建两个独立的项目。你怎么看?
spring - Spring Cloud Gateway API - 路由上的上下文路径不起作用
我在 application.yml 中设置了上下文路径
我已经配置了一些路线
我希望使用 localhost:4177/gb-integration/sbl/** 访问 API 网关但是它仅适用于 localhost:4177/sbl/**
似乎我的上下文路径被忽略了。有什么想法可以让我的上下文路径在我的所有路线上工作吗?
spring - 在 Spring Cloud Gateway 过滤器中引发自定义运行时异常
我们将 Spring Cloud Gateway 与 Spring Boot 2 和响应式 webflux 模块一起使用。有一个为其中一条路由添加的身份验证过滤器。现在,如果我们抛出一个带有特定状态码的 RuntimeException,它实际上并没有启动。之前这个 auth 检查是 Spring 中 HandlerInterceptor 的一部分,现在我们不能将 web 模块与 webflux 一起使用(来自 Spring 云网关的冲突)。前任:
目前实际响应总是给出 500 内部服务器错误。这是从哪里来的?我们可以在这里从过滤器中获取错误吗?