发送多个HTTP2.0请求



如何在单个SSL连接上发送多个HTTP2.0请求?

我尝试了以下操作,HTTP1.1运行良好,但HTTP2.0失败了。

$ openssl s_client -alpn h2 -connect navaztheking.com:443 
CONNECTED(00000003)
depth=4 C = US, O = "Starfield Technologies, Inc.", OU = Starfield Class 2 Certification Authority
verify return:1
depth=3 C = US, ST = Arizona, L = Scottsdale, O = "Starfield Technologies, Inc.", CN = Starfield Services Root Certificate Authority - G2
verify return:1
depth=2 C = US, O = Amazon, CN = Amazon Root CA 1
verify return:1
depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon
verify return:1
depth=0 CN = navaztheking.com
verify return:1
---
Certificate chain
0 s:/CN=navaztheking.com
i:/C=US/O=Amazon/OU=Server CA 1B/CN=Amazon
1 s:/C=US/O=Amazon/OU=Server CA 1B/CN=Amazon
i:/C=US/O=Amazon/CN=Amazon Root CA 1
2 s:/C=US/O=Amazon/CN=Amazon Root CA 1
i:/C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./CN=Starfield Services Root Certificate Authority - G2
3 s:/C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./CN=Starfield Services Root Certificate Authority - G2
i:/C=US/O=Starfield Technologies, Inc./OU=Starfield Class 2 Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIFfTCCBGWgAwIBAgIQCMMRr5cgu+75Ro2AzlH5LTANBgkqhkiG9w0BAQsFADBG
MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRUwEwYDVQQLEwxTZXJ2ZXIg
Q0EgMUIxDzANBgNVBAMTBkFtYXpvbjAeFw0xOTA4MDcwMDAwMDBaFw0yMDA5MDcx
MjAwMDBaMBsxGTAXBgNVBAMTEG5hdmF6dGhla2luZy5jb20wggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQCmF1rs6DUFGbwW1Ndxg6BQCvH1JIUFXc2KLou5
/5phrk5LybTSXyPEEQ+7ztpYAeBVv5uETtG3huDJwA2v1Vcs8JGEM+h1q0yBYv9t
wpUDv/tIkAdJbkOtZKBnhpe81CQzpm+/ZPPy9QsCq18YQy+zK88N0j5wHoeV2MiK
V3oCXNIATi9klbSUik1F4Gov+0jyzj9yUzdxJzmu9zGye9Bt++lQKxZnTTfuYyIc
k97fvPhMCNWgw5ADT2XiRZU4m7aGFpeTzD1CCZ1J4dNiqAB+1RqF0QQXOWH0/xhF
KgovhVL8p00mbj7OvEwVBkUBYZ3qBXLQNqPAjC5S+5JCooBfAgMBAAGjggKQMIIC
jDAfBgNVHSMEGDAWgBRZpGYGUqB7lZI8o5QHJ5Z0W/k90DAdBgNVHQ4EFgQUG741
bQo4YFNwTRqV6WFp4R5hJwowLwYDVR0RBCgwJoIQbmF2YXp0aGVraW5nLmNvbYIS
Ki5uYXZhenRoZWtpbmcuY29tMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggr
BgEFBQcDAQYIKwYBBQUHAwIwOwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL2NybC5z
Y2ExYi5hbWF6b250cnVzdC5jb20vc2NhMWIuY3JsMCAGA1UdIAQZMBcwCwYJYIZI
AYb9bAECMAgGBmeBDAECATB1BggrBgEFBQcBAQRpMGcwLQYIKwYBBQUHMAGGIWh0
dHA6Ly9vY3NwLnNjYTFiLmFtYXpvbnRydXN0LmNvbTA2BggrBgEFBQcwAoYqaHR0
cDovL2NydC5zY2ExYi5hbWF6b250cnVzdC5jb20vc2NhMWIuY3J0MAwGA1UdEwEB
/wQCMAAwggEEBgorBgEEAdZ5AgQCBIH1BIHyAPAAdgDuS723dc5guuFCaR+r4Z5m
ow9+X7By2IMAxHuJeqj9ywAAAWxrs26bAAAEAwBHMEUCIQC0tUq2oMfynAUhKNgg
+pdFlduX5H0tw8ovu3ss59lUcAIgZXfF1RVQqReLzgUAcIJNsdf3A2QTWQJHEUFp
/TdmP/EAdgCHdb/nWXz4jEOZX73zbv9WjUdWNv9KtWDBtOr/XqCDDwAAAWxrs27o
AAAEAwBHMEUCIQDwk2wAvG5tn0h3Qfr+E4Ijo+avACPP7WcewK3hJxV5fgIgFW8C
dXGq86Cn97G469Bii/fV4d8wlYTf9xcx8M61ZLkwDQYJKoZIhvcNAQELBQADggEB
ACXOYZSjkDC/652mOpH00ss105vd3OA/P08HVD6xG/5fouhrQqm2N7dLQ9UyjsrI
SGHXA0+vTj/K99zaHYMohCVI+b230pDrpeVEgfnxTnthYtQfEF4eJ9ZWGPCD6mEk
TzpT+McC28V0+2Zsq/xsxbZFWw3duhzcuBSDtOpZljmNb70BzCHnf5aSeC3QQJJe
gZoIY/2RxSWw28KfPhjv63XH7LOSFAAOv5CakB4QnneZosgUDmPXDTrY9C80Xyr7
fDw1TMUb9hRuxlaI6mW9hoGiQc4LbKFpDjUkBZSFORUNqg0DRBMjpM4CNKMO6ioN
bHiPa464s/w8/3efHuZiHDw=
-----END CERTIFICATE-----
subject=/CN=navaztheking.com
issuer=/C=US/O=Amazon/OU=Server CA 1B/CN=Amazon
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 5517 bytes and written 424 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
ALPN protocol: h2
SSL-Session:
Protocol  : TLSv1.2
Cipher    : ECDHE-RSA-AES128-GCM-SHA256
Session-ID: B37B036FD3108D8EFDB901B41323D299EF58ADC0019A13EEECEE7095012E4D10
Session-ID-ctx: 
Master-Key: 3B02A6F37CA6BA14B08ABCD938341AB34EAE91FC8C65AB79C7B05CB327D251F5DFF3DDBC80E9075301A676DCE36A57DE
Key-Arg   : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
TLS session ticket lifetime hint: 43200 (seconds)
TLS session ticket:
0000 - 50 57 60 48 e6 b5 66 0c-bf 27 34 8c f8 f6 8b 1d   PW`H..f..'4.....
0010 - 6d c6 08 20 08 9e 2b cf-0d 85 6a 2f a7 51 b6 a2   m.. ..+...j/.Q..
0020 - 0e 17 bf a9 fb a4 47 aa-60 42 6e c3 48 6a b0 dc   ......G.`Bn.Hj..
0030 - bb 73 64 41 e2 b4 73 68-94 12 c0 9b 73 32 34 15   .sdA..sh....s24.
0040 - 2d 2c 23 9e 91 f6 84 d6-8b 8c 33 4b 05 91 16 de   -,#.......3K....
0050 - fb bb 74 e9 a6 ac 47 0b-8e 5b aa 89 b7 4b 79 d3   ..t...G..[...Ky.
0060 - 5e e8 4f d6 d6 29 4c b5-81 c5 6b be f0 20 e9 98   ^.O..)L...k.. ..
0070 - dd 71 a1 86 cb ff bf d9-39 04 0b 2d c6 47 ce 60   .q......9..-.G.`
0080 - d3 05 a6 d7 b6 d1 6e 96-75 01 0d 3d 79 d4 9a 06   ......n.u..=y...
0090 - eb e6 fa be 37 9e fa 5c-94 5e 93 ce 65 a8 bf 4b   ....7...^..e..K
00a0 - ea 83 0f e4 20 a8 7a 47-b1 d8 b7 c7 e6 e6 59 ce   .... .zG......Y.
Start Time: 1585344503
Timeout   : 300 (sec)
Verify return code: 0 (ok)
---
????
GET / HTTP/1.1
Host: navaztheking.coclosed
$

正如您在上面看到的,它只是"关闭"连接。数据包捕获显示客户端未发送请求。我怎样才能做到这一点。

我尝试了"curl-http2",它有效,但我不能在curl上发送多个请求。

在本例中,您没有发送HTTP/2请求。您正在使用HTTP/2的应用程序协议标识符创建TLS连接,但随后以HTTP/1.1格式发送明文数据。HTTP/2端点不会接受这一点,连接将被关闭。

为了发送一个(或多个(HTTP/2请求,您需要使用一个以正确的HTTP/2格式发送请求的库。

curl是一个库和CLI工具,可以发送正确的HTTP/2请求。为了使用CLI版本发送多个请求,您可以使用--next选项。

最新更新