2017-05-24 151 views
-1

我有一个奇怪的行为我不能与HTTP/2说明:请求缓存的HTTP/2

期间OAuth认证过程中,我试图登入A.domain,使用B.domain供应商。当两个服务器都启用了HTTP/2并且使用相同的SSL证书(通配符)时,在相同的IP上(因此使用TLS SNI)向B.domain发送请求(我在地址栏中有网址B.domain,标题)被发送到A.domain! 我可以用firefox和chrome重现这一点,但不能徒步旅行。 我们正在使用angular 1.6,但我怀疑这是一个JS问题。 如果域名不同,问题就会消失。

它可能是在Chrome和Firefox的http/2实现中的错误?

回答

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实现中的一个错误。

+0

是的,我可以看到A.domain的默认页面,即使所有的页眉和导航栏都显示B.domain。这是可怕的部分。 – Gravis

+0

在检查员中,我可以看到一个标题“Host:B.domain”,但答复标题显然来自A.domain。有一个按钮“编辑并重新发送”在Firefox上,如果我使用它,并再次发送相同的请求,该页面由B.domain提供。如果我在Firefox中禁用http/2,问题就会消失。 – Gravis

+0

我看过你提到的文章,这很可能是我遇到的问题。感谢分享你的知识,我正在验证你的答案:) – Gravis