如何将 Kongs X 转发前缀标头放入 Spring Boot 应用程序及其 HATEOAS 链接中?



我有一个通过Kong API Gateway访问的Spring Boot应用程序。正因为如此,Spring 提供的自我链接是错误的。

通过Kong访问我的应用程序的URL如下: https://api.anything.de/myapplication/test/countries/

但是自链接看起来像这样: https://api.anything.de/countries/5a4cf88a45a64a97a7cdb38c

如您所见,自链接中缺少前缀"/myapplication/test"。

这就是为什么我试图在 Kong 的配置中添加 X-转发前缀。

这是我在 Kong 的 config.yml 中的条目:

- name: MyApplicationTest
plugins:
- name: request-transformer
attributes:
enabled: true
config:
add:
headers:
- 'X-Forwarded-Prefix:/myapplication/test'
attributes:
uris:
- /myapplication/test
strip_uri: true
preserve_host: false
upstream_url: 'http://<IP>/my-application-test'

在我的应用程序的application.yml中,我有这个:

server:
port: 8080
compression:
enabled: true
mime-types: application/json
use-forward-headers: true

我的类应用程序.java如下所示:

@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
FilterRegistrationBean forwardedHeaderFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new ForwardedHeaderFilter());
filterRegistrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE);
return filterRegistrationBean;
}
}

因为我想知道我的应用程序是否从 Kong 收到标头,所以我有一个终点可以看到标头。但是没有 X 转发前缀标头。

有谁知道我错过了什么或知道如何解决这个问题?

谢谢!

如果您使用的是 Spring 5.1,那么出于安全原因,转发确实进行了重大更改。

https://github.com/spring-projects/spring-hateoas/pull/717 目前正在审查中,以便Spring HATEEAS可以与Spring MVC中的这一重大更改正确集成。

相关内容

最新更新