我正在尝试在 C# 中实现一个小型 HTTP/2 服务器以了解协议。我正在运行 Chrome 的最新金丝雀版本(v 45.0.2436.5),但是我似乎无法让客户端协商升级到 HTTP/2 连接。
RFC 声明如下:
在不知道下一跳是否支持 HTTP/2 的情况下请求“http”URI 的客户端使用 HTTP 升级机制([RFC7230] 的第 6.7 节)。客户端通过发出包含带有“h2c”令牌的 Upgrade 标头字段的 HTTP/1.1 请求来执行此操作。
这让我相信第一个请求应该包含一个Upgrade
标头,但事实并非如此。这是我收到的请求:
GET / HTTP/1.1
Host: 127.0.0.1:1234
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2436.5 Safari/537.36
HTTPS: 1
Accept-Encoding: gzip, deflate, sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
谁能向我解释为什么会这样?
提前感谢您的回答!