【问题标题】:Forcing SSL on websockets and Tomcat With Spring using Safari bug使用 Safari 错误在 websockets 和 Tomcat 上强制使用 SSL
【发布时间】:2019-07-09 17:07:39
【问题描述】:

我们有一个在 Tomcat 8.5 上使用带有 Spring 的 websockets 的应用

我们发现使用这种组合的问题

  • 使用 context.xml 中的 <security-constraint> 在 tomcat 中强制 SSL 连接
  • 使用spring 4.2.6+
  • 从 Safari 浏览。

我们遇到的问题就是这个。

WebSocket - Safari 9 - Invalid UTF-8 sequence in header value

基本上 Safari 收到了一个空的 Expires 标头发送给它。它为空的原因是由于 SPR-14053 在配置缓存时引入了重置 Expires Header。

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

我相信因为 Header 之前是 Tomcat 设置的,而不是从响应中删除 Expire 标头,而是将其设置为空白,这会导致 safari 出现问题。

我知道我可以解决这个问题,我的问题是,应该在哪里解决这个问题?这应该针对 Safari、Spring 或 Tomcat 的错误列表提交吗?

【问题讨论】:

    标签: spring tomcat websocket safari


    【解决方案1】:

    哦,我刚刚意识到,在 Safari 之外修复了它们在空标题上的行为。最好将以下内容添加到 context.xml

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

    并允许 Spring 像往常一样设置缓存属性。而不是让 Tomcat 和 Spring 为使用哪个缓存头而争吵。

    【讨论】:

      猜你喜欢
      • 2012-09-09
      • 2014-12-20
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2015-07-28
      • 2013-01-19
      相关资源
      最近更新 更多