如何确定客户端是不是使用 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 进行连接?的主要内容,如果未能解决你的问题,请参考以下文章
网络通信与信息安全之深入解析TCP连接中如何确定客户端的端口号