C# WEB API 从 HTTP2 到 SPDY 的协议更改

Posted

技术标签:

【中文标题】C# WEB API 从 HTTP2 到 SPDY 的协议更改【英文标题】:Protocol Changes from HTTP2 to SPDY for C# WEB API 【发布时间】:2018-12-07 02:12:03 【问题描述】:

我们有 Angular + WEB API 应用程序,部署在 Azure 上。目前部署后,我们可以在 CHROME (Version 67.0.3396.99 (Official Build) (64-bit)) 网络选项卡中看到 SPDY 协议。但之前我们能够看到用于 Web API 请求的 HTTP2 协议。我们需要遵循哪些步骤来获取 HTTP2 请求。

【问题讨论】:

请问截图和Chrome版本号? Chrome 在两年多前关闭了 SPDY 支持:blog.chromium.org/2016/02/… @BarryPollard 在主帖中更新 【参考方案1】:

有趣。

看起来缓存资源至少存在一个错误 (https://bugs.chromium.org/p/chromium/issues/detail?id=704146),这可能解释了您的中间两个请求 - 它们是浅灰色的,表明缓存资源已被使用。

但是,在您的示例和我自己的一些测试中,我也可以看到对该站点(或相关站点)的其他请求也发生了同样的事情。

简而言之,这些似乎是显示错误,而不是真正通过 SPDY 下载。正如我在 cmets 中提到的,Chrome 已弃用 SPDY,不再支持它,因此它不能是 SPDY。

您还可以通过以下方式证明这一点:

    在新选项卡中打开请求,您将看到它以h2http/2+quic/ 的形式下载,这将显示在相关站点上实际应该使用的内容。这就是你在短期内“回到 HTTP2”所需要的步骤。

    使用 chrome://net-internals/#http2 和 chrome://net-internals/#quic 页面,您将看到通过 h2 或 quic 下载的请求。所以它肯定只是向网络选项卡报告不正确的协议。

    检查您自己的日志,您将再次看到它们是通过 HTTP/2(或 QUIC,如果您支持)请求的。

HTTP/2 和 QUIC 是基于 Chrome 中的大量 SPDY 代码构建的,并且看起来它仍然在很多地方被引用。

所以基本上你不需要做任何事情,应该忽略它。如果您真的对此有强烈的感觉,请向 Chrome 团队提出错误,或者评论或为上述错误加注星标,以便您查看它的更新以及他们何时修复它。

【讨论】:

以上是关于C# WEB API 从 HTTP2 到 SPDY 的协议更改的主要内容,如果未能解决你的问题,请参考以下文章

检测浏览器中的 HTTP2/SPDY 支持

HTTP2 / SPDY 推流验证:如何测试?

使用 HTTP2 和 TLS 的 Cowboy Web 服务器在 Chrome 中获取 ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事

Web页面逐年增长, TCP协议面临挑战

Nginx同时支持spdy和http2