Hateoas ссылки, созданные с внутренним именем хоста вместо перенаправленного хоста после обновления - PullRequest
0 голосов
/ 01 марта 2019

Мы недавно обновились до 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, которую мы не используем, так что о решении не может быть и речи.Поэтому я попытался добавить новый фильтр ForwardedHeaderFilter непосредственно в приложение web.xml.Однако это создает проблемы с URL-адресами перенаправления, когда HTTPS преобразуется в HTTP.Другое упомянутое решение состояло в обновлении до 0.25.1 и использовании свойства Spring server.use-forward-headers = true.Обновление завершено, но я не смог найти XML-эквивалент этого свойства, так как мы используем Spring XML для конфигурации.Любая помощь в этом отношении будет искренне признательна.

1 Ответ

0 голосов
/ 20 марта 2019

Нашел ответ, пройдя источник и попробовав несколько различных комбинаций.

Проблемы, упомянутые в вопросе, были исправлены в выпуске Hateoas 0.25.1, поэтому одной из частей решения было обновить Hateoas до0.25.1.

Другая часть основана на ссылке SO, приведенной в вопросе, но в моем случае она не работала как есть, поскольку применима только для Spring Boot.Поскольку мы не используем Spring Boot, но у нас есть традиционное веб-приложение, работающее с контейнером J2EE, решение состоит в том, чтобы включить ForwardedHeaderFilter как часть 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>
...