Должен ли spring-web-mvc обрабатывать значения заголовка соединения с учетом регистра?
При работе с https://github.com/leangen/graphql-spqr-spring-boot-starter версии 0.0.4 я столкнулся с проблемой, при которой AWS ALB (балансировщик нагрузки приложений) изменил значениеConnection
заголовок из Upgrade
к upgrade
и сделал невозможными подписки через веб-сокеты.
Проблема состоит из трех частей:
- ALB изменил значение заголовка
- в классе GraphQLCotroller библиотеки spqr объявлено следующее условие заголовка:
@GetMapping(
value = "${graphql.spqr.http.endpoint:/graphql}",
produces = MediaType.APPLICATION_JSON_VALUE,
headers = "Connection!=Upgrade"
)
- Spring проверяет значение заголовков внутри spring-webmvc-5.2.7
org.springframework.web.servlet.mvc.condition.HeadersRequestCondition#getMatchingCondition
с учетом регистра
Проверяя https://tools.ietf.org/html/rfc7230, мы можем увидеть, что в параметрах подключения не учитывается регистр.
Если у Spring есть собственный обработчик для этого заголовка, как и у него ConsumesRequestCondition
а также ProducesRequestCondition
за Accept
а также Content-Type
заголовки?