Принудительное использование SSL для веб-сокетов и Tomcat With Spring с помощью ошибки Safari - PullRequest
0 голосов
/ 09 июля 2019

У нас есть приложение, использующее веб-сокеты с Spring на Tomcat 8.5

. Мы сталкиваемся с проблемами при использовании этой комбинации вещей

  • Форсирование SSL-соединения в tomcat с использованием <security-constraint> в контексте.xml
  • Использование пружины 4.2.6 +
  • просмотра в Safari.

Проблема, с которой мы столкнулись, заключается в следующем.

WebSocket - Safari 9 - Неверная последовательность UTF-8 в значении заголовка

По сути, Safari получает пустой заголовок Expires, отправленный ему.Причина, по которой он пуст, связана с SPR-14053, который ввел сброс заголовка Expires при настройке кэширования.

https://github.com/spring-projects/spring-framework/issues/18625

То, что происходит, заключается в том, что в Tomcat при использовании и без отключения ProxyCaching, Tomcat устанавливает и Expires Header

https://github.com/apache/tomcat/blob/8.5.x/java/org/apache/catalina/authenticator/AuthenticatorBase.java#L508

Я считаю,поскольку заголовок был ранее установлен Tomcat, вместо удаления заголовка Expire из ответа он просто устанавливается пустым, что вызывает проблемы в сафари.

Я знаю, что могу обойти это, мой вопрос: гдедолжен ли исправить эту ложь?Должно ли это быть подано в список ошибок Safari, Spring или Tomcat?

1 Ответ

0 голосов
/ 09 июля 2019

О, я только что понял, за пределами Safari исправление их поведения в пустом заголовке.Лучше всего добавить следующее в context.xml

<Valve className="org.apache.catalina.authenticator.SSLAuthenticator" disableProxyCaching="false"/>

и позволить Spring установить свойства кэширования как обычно.Вместо того, чтобы и Tomcat, и Spring спорили о том, какие заголовки кэширования использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...