我有一个通过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中的这一重大更改正确集成。