如何确定客户端是不是使用 HTTP/2 进行连接?

Posted

技术标签:

【中文标题】如何确定客户端是不是使用 HTTP/2 进行连接?【英文标题】:How can I find out whether a client is connecting using HTTP/2?如何确定客户端是否使用 HTTP/2 进行连接? 【发布时间】:2016-05-11 04:54:19 【问题描述】:

在 ASP.NET 中,如何在运行时确定客户端是否使用 HTTP 2 进行连接?

【问题讨论】:

【参考方案1】:

有趣的是,我在System.Web.HttpRequest 上找不到任何相关属性(只是粗略地看了一下)。您需要深入研究一下,看看 vnext API 中是否有任何新内容,具体取决于您使用的内容。

如果您使用 OWIN,也可以避免可能缺少 API。 standard 要求在请求数据中设置 owin.RequestProtocol 属性。

在 ASP.NET 中,您可以使用 HttpContext.Current.GetOwinContext() 从任何地方访问代表这些属性的 OwinContext 对象。或者,您可以自己通过其他方式(例如依赖注入)访问它。这将取决于您的环境,寻找带有 Katana 和 vnext 的 OWIN 启动类。

【讨论】:

【参考方案2】:

在您的 Chrome 浏览器上安装 HTTP/2 和 SPDY 插件。该插件将在 url 地址栏中有一个闪电符号。如果闪电符号变为蓝色,则表示通信是通过 HTTP/2.0 进行的。绿色表示 SPDY 连接。

对于 Firefox,转到开发者工具选项 -> 网络,然后连接到服务器。您会在响应标头上找到 Upgrade-h2。升级 h2 表明您的客户端正在与您的服务器一起运行 HTTP/2.0。

【讨论】:

我需要在服务器运行时找出所有连接用户。

以上是关于如何确定客户端是不是使用 HTTP/2 进行连接?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式确定 Cisco *** 客户端是不是已连接

网络通信与信息安全之深入解析TCP连接中如何确定客户端的端口号

如何确定是不是有数据可从 boost::asio 中的套接字读取?

如何确定 JMS 连接是不是存在?

如何使gRPC 获得最佳性能?

如何确定与 SignalR 客户端的服务器断开连接?