Я устанавливаю curl с поддержкой протокола http2.0, и я вижу HTTP2 в информации о версии.Не удается отправить запрос HTTP/2 с curl
$ ./curl --version
curl 7.42.1 (x86_64-apple-darwin14.5.0) libcurl/7.42.1 OpenSSL/1.0.2a zlib/1.2.5 nghttp2/0.7.13
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets
Но когда я отправить запрос через завиток (с расширенным режимом), я вижу HTTP1.1 протокол.
./curl -v --http2 https://http2bin.org/get
* Trying 104.131.161.90...
* Connected to http2bin.org (104.131.161.90) port 443 (#0)
* ALPN, offering h2-14
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
* CAfile: /usr/local/etc/openssl/cert.pem
CApath: none
* TLSv1.2, TLS Unknown, Unknown (22):
* TLSv1.2, TLS handshake, Client hello (1):
* SSLv2, Unknown (22):
* TLSv1.2, TLS handshake, Server hello (2):
* SSLv2, Unknown (22):
* TLSv1.2, TLS handshake, CERT (11):
* SSLv2, Unknown (22):
* TLSv1.2, TLS handshake, Server key exchange (12):
* SSLv2, Unknown (22):
* TLSv1.2, TLS handshake, Server finished (14):
* SSLv2, Unknown (22):
* TLSv1.2, TLS handshake, Client key exchange (16):
* SSLv2, Unknown (20):
* TLSv1.2, TLS change cipher, Client hello (1):
* SSLv2, Unknown (22):
* TLSv1.2, TLS handshake, Finished (20):
* SSLv2, Unknown (20):
* TLSv1.2, TLS change cipher, Client hello (1):
* SSLv2, Unknown (22):
* TLSv1.2, TLS handshake, Finished (20):
* SSL connection using TLSv1.2/ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use h2-14
* Server certificate:
* subject: OU=Domain Control Validated; OU=EssentialSSL; CN=www.http2bin.org
* start date: 2015-02-21 00:00:00 GMT
* expire date: 2016-02-21 23:59:59 GMT
* subjectAltName: http2bin.org matched
* issuer: C=GB; ST=Greater Manchester; L=Salford; O=COMODO CA Limited; CN=COMODO RSA Domain Validation Secure Server CA
* SSL certificate verify ok.
* Using HTTP2
* Using HTTP2
* SSLv2, Unknown (23):
* SSLv2, Unknown (23):
* SSLv2, Unknown (23):
> GET /get HTTP/1.1
> Host: http2bin.org
> User-Agent: curl/7.42.1
> Accept: */*
>
* http2_recv: 16384 bytes buffer
* SSLv2, Unknown (23):
* SSLv2, Unknown (23):
* http2_recv: 16384 bytes buffer
* SSLv2, Unknown (23):
* http2_recv: 16384 bytes buffer
* SSLv2, Unknown (23):
< HTTP/2.0 200
< server:h2o/1.6.1
< date:Wed, 03 Feb 2016 15:44:23 GMT
< content-type:application/json
< access-control-allow-origin:*
< access-control-allow-credentials:true
< x-clacks-overhead:GNU Terry Pratchett
< content-length:252
<
{
"args": {},
"headers": {
"Accept": "*/*",
"Connection": "keep-alive",
"Host": "http2bin.org",
"User-Agent": "curl/7.42.1",
"Via": "2 http2bin.org"
},
"origin": "193.238.96.12",
"url": "https://http2bin.org/get"
}
* Connection #0 to host http2bin.org left intact
запрос Теперь Curl отправить с помощью HTTP/1.1
И если я установить опцию --http1.0
, затем Curl отправить запрос через HTTP/1.0.
Почему cURL не отправляет запрос через HTTP/2.0?
Операционная система: OS X Yosemite (10.10.5).
Установите cURL и OpenSSL через HomeBrew.
Thank.
Thank, я не знал, чем локон показать только HTTP/1.1 запросы, и перед отправкой конвертируется в 2.0. – ZhukV