2016-02-03 8 views
1

Я устанавливаю 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.

ответ

4

Это фактически и отправляет, и получает HTTP/2 уже (версия Draft-14, которая является предварительной версией спецификации). Вы должны рассмотреть возможность обновления библиотек curl и nghttp2, чтобы заставить его говорить окончательную версию протокола HTTP/2 (RFC 7540).

Подсказка с сервера:

* ALPN, server accepted to use h2-14 

локон показывает запрос, используя HTTP/1-стиль, чтобы он выглядел знакомым, но под капотом он преобразует его в HTTP/2 и отправляет его. затем

Сервер отвечает HTTP/2:

< 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:* 
[snip] 
+1

Thank, я не знал, чем локон показать только HTTP/1.1 запросы, и перед отправкой конвертируется в 2.0. – ZhukV

 Смежные вопросы

  • Нет связанных вопросов^_^