OS X上的Tomcat 9.0.16:Safari无法通过HTTP / 2

时间:2019-03-13 14:34:20

标签: tomcat safari compression gzip http2

我们正在OS X Mojave(10.14.3)和OpenJDK 11.0.1 + 13上运行Tomcat 9.0.16服务器,并且正在升级到HTTP / 2。但是,使用此配置,Safari无法从服务器加载任何gzip压缩的内容,并输出错误消息“网络连接丢失”。这仅在加载gzip压缩的内容时才会发生。关闭HTTP / 2升级协议(org.apache.coyote.http2.Http2Protocol)的压缩将解决此问题。没有其他浏览器似乎有此问题(已在最新的Edge,Firefox和Chrome上成功测试)。

我们已经尝试过的:

  • sendFile的不同设置->问题仍然存在
  • compressingMinSize->问题的不同设置仍然存在
  • 在compressibleMimeType中使用不同的MIME类型进行实验->问题仍然存在
  • 在连接器中使用org.apache.coyote.http11.Http11Nio2Protocol->问题仍然存在
  • 在APR 1.6.5和tomcat-native 1.2.21的连接器中使用org.apache.coyote.http11.Http11AprProtocol->问题仍然存在

现在,我们唯一的选择是使用HTTP / 2而不进行压缩或降级到HTTP / 1.1。我注意到Debian apache2 bugtracker上有一个类似的错误:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=915103。可能是相关的,因为该错误看起来很相似,并且那里也只有Safari受到影响。

有人暗示这里可能是什么问题吗? Tomcat错误? Safari错误? JVM错误?到目前为止,我还无法弄清这个问题的根源,Tomcat的日志文件似乎也无济于事。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

有完全相同的问题(tomcat 版本是 9.021)。问题是我们的 useSendfile 为 false。默认值为 true - 因此您可以将其省略。它以前确实有效,但后来苹果改变了一些东西。验证它适用于较旧的 MacOS 版本(想想 sierra 左右)。

<块引用>

/>

GZIP 和 Http2 现在可在 Ipad 上运行(chrome、safari)。