在升级后使用内部主机名生成的Hateoas链接而不是转发的主机

问题描述 投票:0回答:1

我们最近升级到Spring 5.1.3和Hateoas 0.25并开始面临生成链接的问题。 假设我们的域名是xyz.com,并且通过负载均衡器来到任何子系统的所有请求都被转发到主系统,其中生成的hateoas链接与xyz.com域有链接。 但是,在升级之后,为此类请求生成的hateoas链接现在具有内部主机名,例如。 host5678.internaldomain.com。 我遇到了一个问题:https://github.com/spring-projects/spring-hateoas/issues/753,它通过https://stackoverflow.com/a/53269319提供了一个临时解决方案,建议使用FilterRegistrationBean 似乎FilterRegistrationBean作为Spring Boot的一部分提供,我们不使用它,因此解决方案是不可能的。 所以我尝试直接在应用程序web.xml中添加一个新的过滤器ForwardedHeaderFilter。但是,这会导致重定向URL与HTTPS转换为HTTP时出现问题。 提到的另一个解决方案是升级到0.25.1并使用Spring属性server.use-forward-headers = true。升级已完成,但由于我们使用Spring XML进行配置,因此无法找到此属性的XML等价物。 对此问题的任何帮助都将深表感谢。

java spring spring-hateoas
1个回答
0
投票

在完成源代码并尝试一些不同的组合后找到答案。

问题中提到的问题已在Hateoas版本0.25.1中修复,因此解决方案的一部分是将Hateoas升级到0.25.1。

另一部分受到问题中给出的SO链接的启发,但在我的情况下它不起作用,因为它仅适用于Spring Boot。由于我们不使用Spring Boot,但我们有一个使用J2EE容器运行的传统Web应用程序,因此解决方案是将ForwardedHeaderFilter作为Web应用程序的web.xml的一部分包括如下:

    <filter>
    <filter-name>forwardedHeaderFilter</filter-name>
    <filter-class>org.springframework.web.filter.ForwardedHeaderFilter</filter-class>
    <init-param>
        <param-name>relativeRedirects</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>forwardedHeaderFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
© www.soinside.com 2019 - 2024. All rights reserved.