http2中的连接消息头应该是什么样子



我发现get消息头看起来像:

:method: GET
:scheme: https
:authority: server.net
:path: /config
accept: */*
accept-encoding: gzip,deflate

连接消息头应该是什么样子?

这个例子来自http2:的RFC

GET /resource HTTP/1.1           HEADERS
Host: example.org          ==>     + END_STREAM
Accept: image/jpeg                 + END_HEADERS
:method = GET
:scheme = https
:path = /resource
host = example.org
accept = image/jpeg

我想知道http2中connect头的等价物。在Http1中是:

CONNECT example.org:443 HTTP/1.1
Host: example.org:443

HTTP/2中CONNECT方法的格式在第8.3节中指定。

上面使用的格式看起来像:

:method: CONNECT
:authority: proxy.net:8080

按照规定,必须省略:scheme:path

HTTP/2CONNECT方法也可以用于引导其他协议(例如,参见HTTP/2上的WebSocket(,因此,另外,:protocol伪报头也可以存在。

但是请记住,这只是HTTP/2的文本表示;实际在网络上传输的字节是不同的,因为您必须使用HPACK对它们进行编码。

除非您实际上正在编写HTTP/2实现,否则最好使用现有的库(几乎在任何编程语言中都可用(来发送HTTP/2请求(任何类型(:库将负责将CONNECT请求转换为适当的字节,以便通过网络发送。

最新更新