1

我的公司使用 API 网关来转换 URL,如下所示,同时修改资源的主机名和基本路径: https://apigateway.mycompany.com/myapp/foo -> https://myapp.mycompany.com/foo

在 Spring Data REST 中,应用程序希望使用https://myapp.mycompany.com/foo. 如何自定义应用程序以强制它为所有rel属性生成 API 网关链接?

我想更改链接的呈现方式,而不更改 myapp.mycompany.com 服务器上这些资源的实际路径。我检查了关于自定义的文档部分,rel但它似乎没有涵盖这个用例。

我该怎么办?

4

1 回答 1

1

如果 Spring MVC 知道您的负载均衡器/代理,它可以自动重写 Spring Data REST 和您自己的控制器(带有MvcUriComponentsBuilder)中生成的 URL,以反映原始请求 URL,包括方案、端口等。

有一个名为的内置 Servlet 过滤器ForwardedHeaderFilter通过检查众所周知的转发标头来为您处理这个问题,例如X-Forwarded-For; 如果您使用的是 Spring Boot,您可以设置server.forward-headers-strategy = framework为注册一个,或者您可以使用@Import(ForwardedHeaderFilter.class)创建一个 bean,然后 Boot 将应用于容器。如果您使用没有 Boot 的 Spring MVC,请将此过滤器添加到您的 Servlet 配置中。

于 2022-02-23T00:30:20.153 回答