OS X上的Tomcat 9.0.16:Safari无法通过HTTP/2加载gzip压缩内容

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

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

我们已经尝试过的:

  • sendFile->的不同设置问题仍然存在
  • 压缩大小->的不同设置问题仍然存在
  • 在CompressionleMimetype->中尝试不同的MIME类型仍然存在问题
  • 在连接器中使用org.apache.coyote.http11.Http11Nio2Protocol->问题仍然存在
  • 在带有APR 1.6.5和tomcat native 1.2.21的连接器中使用org.apache.coyote.http11.http11apr协议->问题仍然存在
现在,我们唯一的选择是使用HTTP/2而不进行压缩,或者降级到HTTP/1.1。我注意到Debian apache2 bugtracker上有一个类似的错误:。可能是相关的,因为这个bug看起来很相似,而且只有Safari受到影响

有没有人知道这里可能有什么问题?雄猫虫?狩猎虫?JVM错误?到目前为止,我还无法找到这个问题的根源,Tomcat的日志文件似乎也没有帮助


非常感谢您的帮助。

遇到了完全相同的问题(tomcat版本是9.021)。问题是我们在false上使用了SendFile。默认值为true-因此您可以忽略它。它以前确实有效,但后来苹果改变了一些东西。验证了它与较旧的MacOS版本一起工作(想想sierra吧)


GZIP和Http2现在可以在Ipad(chrome,safari)上工作。

您可以通过curl通过HTTP/2连接并显示输出吗?这里是:curl-i-H“Accept:application/json”-H“Accept Encoding:GZIP”--不安全--Http2--verbose->output at。请注意“curl:(18)传输结束,剩下46401字节要读取”->这似乎很奇怪。有什么想法吗?我应该注意到,当在server.xml中禁用HTTP/2 Upgrade协议时,curl不会返回上述错误,并且在HTTP/1.1中一切正常。没有gzip压缩的HTTP/2也是如此。这个curl错误看起来很奇怪。sendfile在过去肯定存在问题(请参见此处:),另一种选择是在它前面粘贴一个Web服务器,如Apache或Nginx,并将请求ProxyPass传回Tomcat,但让Web服务器处理HTTP/2(可能还有TLS、GZIP…等)。Apache拥有最好的HTTP/2支持IMHO。无论如何,这是我的首选选项,因为我认为Web服务器在证书管理和安全选项方面更为出色。