我有一个奇怪的行为,我无法用http / 2解释:
在oauth身份验证过程中,我尝试使用B.domain提供程序登录A.domain。当两个服务器都启用了HTTP / 2并使用相同的ssl cert(通配符)时,在同一个IP上(所以使用TLS SNI)对B.domain的请求(我在地址栏中有url B.domain,并且标题)被发送到A.domain! 我可以用firefox和chrome重现这个,但不是safari。 我们使用的是角1.6,但我怀疑这是一个JS问题。 如果域名不同,则问题就会消失。
它可能是chrome和firefox中http / 2实现中的错误吗?
答案 0 :(得分:1)
在HTTP / 2下,可以在称为合并的过程下重复使用。
即使在使用分片来提高HTTP / 1.1连接的性能时,这也是为了获得完整的HTTP / 2优势 - 在HTTP / 2下不再需要这样做,实际上对性能不利(因为设置了额外的功能)连接在客户端和服务器上占用资源。)
此博客文章详细介绍了HTTP / 2连接合并以及不同浏览器如何以不同方式合并:https://daniel.haxx.se/blog/2016/08/18/http2-connection-coalescing/
但是当你说“被发送到A.domain”时我很困惑。应重用连接,但Web服务器应在适当的域下处理它。如果没有发生这种情况,那么这听起来就像您正在使用的Web服务器上的HTTP / 2实现中的错误。