AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1060286
Accepted
ImBoredAllTheTime
ImBoredAllTheTime
Asked: 2021-04-14 10:41:47 +0800 CST2021-04-14 10:41:47 +0800 CST 2021-04-14 10:41:47 +0800 CST

HTTP/2 的请求行是什么?

  • 772

对于 HTTP/0.9:

GET /

对于 HTTP/1.0:

GET / HTTP/1.0

对于 HTTP/1.1:

GET / HTTP/1.1
Host: example.com

HTTP/2 的请求行是什么?是不是像:

GET / HTTP/2.0

还是 HTTP/2?

http2 requestheader
  • 1 1 个回答
  • 2947 Views

1 个回答

  • Voted
  1. Best Answer
    Esa Jokinen
    2021-04-14T20:58:49+08:002021-04-14T20:58:49+08:00

    两者都不; 没有这样的请求行,因为 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 ...
      
    • 对于 HTTPS(第 3.3 节),使用TLS-ALPN(RFC 7301 )中的h2 协议标识符。

    • 由于先验知识(第 3.4 节),请立即从 HTTP/2连接前言开始。

    现在,HTTP/2 客户端连接前言(第 3.5 节)可能是您正在寻找的等价物,因为通信总是以 24 个八位字节的序列开始:

    • 0x505249202a20485454502f322e300d0a0d0a534d0d0a0d0a

      IEPRI *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 节的示例中进行了说明,例如

     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
    
    • 6

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve