angularjs - 使用 HTTP/2 时缓存的请求

标签 angularjs ssl http2

我有一个无法用 http/2 解释的奇怪行为:

在 oauth 身份验证过程中,我尝试使用 B.domain 提供商登录 A.domain。当两个服务器都启用了 HTTP/2,并使用相同的 ssl 证书(通配符)时,在相同的 IP 上(因此使用 TLS SNI)对 B.domain 的请求(我在地址栏中有 url B.domain,并且 header )被发送到 A.domain! 我可以用 firefox 和 chrome 重现这个,但不能用 safari。 我们使用的是 angular 1.6,但我怀疑这是 JS 问题。 如果域不同,问题就会消失。

会不会是 chrome 和 firefox 的 http/2 实现中的错误?

最佳答案

在 HTTP/2 下,连接可以在称为合并的过程中重复使用。

这是为了允许完整的 HTTP/2 优势,即使已使用分片来提高 HTTP/1.1 连接的性能——这在 HTTP/2 下不再需要并且实际上对性能不利(因为设置了额外的连接占用客户端和服务器上的资源)。

这篇博文提供了更多关于 HTTP/2 连接合并以及不同浏览器如何以不同方式合并的详细信息:https://daniel.haxx.se/blog/2016/08/18/http2-connection-coalescing/

但是,当您说它“发送到 A.domain”时,我感到很困惑。 连接 应该被重用,但是网络服务器应该在适当的域下处理它。如果这没有发生,那么这听起来像是您正在使用的 Web 服务器上的 HTTP/2 实现中的错误。

关于angularjs - 使用 HTTP/2 时缓存的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44162263/

相关文章:

ajax - 通过 Ajax 向同一个 HTTP/2 服务器请求许多资源的最快方法

javascript - 使用php检查AngularJS网页上是否存在某个字符串

angularjs - AngularJS 的 Karma/Jasmine 中的模拟模块依赖关系

angularjs - Protractor 测试: Can someone tell me what I'm doing wrong with Require?

apache - 每个路径不同的 ssl 服务器配置

c# - 使用 .net http2 的 Apple 推送通知

javascript - 在 angularjs 中运行 jquery 代码的最佳方式是什么?

java - Java 程序中 SSLKEYLOGFILE 的等价物是什么?

ssl - 错误 : Fetching the page failed because other errors. Twitter 卡问题

http2 - http/2 : client PUSH_PROMISE frame acceptance