ImB*_*ime 1 requestheader http2
对于 HTTP/0.9:
GET /
Run Code Online (Sandbox Code Playgroud)
对于 HTTP/1.0:
GET / HTTP/1.0
Run Code Online (Sandbox Code Playgroud)
对于 HTTP/1.1:
GET / HTTP/1.1
Host: example.com
Run Code Online (Sandbox Code Playgroud)
HTTP/2 的请求行是什么?是不是像这样:
GET / HTTP/2.0
Run Code Online (Sandbox Code Playgroud)
还是 HTTP/2?
两者都不; 没有这样的请求行,因为 HTTP/2 ( RFC 7540 ) 不使用行而是使用帧(第 4 节)进行通信。在这些帧中,使用 HTTP 标头字段(第 8.1.2 节)交换标头。
客户端首先要知道服务器是否支持 HTTP/2。
对于 HTTP(第 3.2 节),这是通过Upgrade: h2c
标头完成的:
> GET / HTTP/1.1
> Host: server.example.com
> Connection: Upgrade, HTTP2-Settings
> Upgrade: h2c
> HTTP2-Settings: <base64url encoding of HTTP/2 SETTINGS payload>
>
< HTTP/1.1 101 Switching Protocols
< Connection: Upgrade
< Upgrade: h2c
<
[ HTTP/2 connection ...
Run Code Online (Sandbox Code Playgroud)
由于先验知识(第 3.4 节),立即从 HTTP/2连接序言开始。
现在,HTTP/2 客户端连接前言(第 3.5 节)可能与您正在寻找的等效,因为通信始终以 24 个八位字节的序列开始:
0x505249202a20485454502f322e300d0a0d0a534d0d0a0d0a
IE PRI *m HTTP/2.0\r\n\r\nSM\r\n\r\n
之后,使用报头压缩(第 4.3 节)在帧中交换报头字段:
标题列表是零个或多个标题字段的集合。当通过连接传输时,使用 HTTP 标头压缩 [ COMPRESSION ]将标头列表序列化为标头块。序列化的报头块然后被分成一个或多个八位字节序列,称为报头块片段,并在
HEADERS
(第 6.2 节)、PUSH_PROMISE
(第 6.6 节)或CONTINUATION
(第 6.10 节)帧的有效载荷内传输。
多个 HTTP/1.1 请求和响应的 HTTP/2 等效项在第 8.1.3 节的示例中说明,例如
Run Code Online (Sandbox Code Playgroud)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
归档时间: |
|
查看次数: |
177 次 |
最近记录: |