2015-04-20 2 views
2

Я хочу использовать http/2 с cURL. Сначала я получил ошибку, когда я пробовал это curl --http2 https://http2.akamai.com/ - «Протокол не поддерживается». Я установил nghttp2 и переустановил cURL, как описано here. Ошибка исчезла, и теперь я могу получить данные с curl --http2. Но страница https://http2.akamai.com/ сообщает мне «Этот браузер не поддерживает HTTP/2», в то время как в хроме или прямо через nghttp2 он говорит «. Вы используете HTTP/2 прямо сейчас!».cURL не работает с nghttp2

Я использую mac os x и устанавливаю все зависимости в последних версиях через homebrew. Источники скручивания (7.41) Я скачал here.

ответ

4

Возможно, вы не используете недавно созданный завиток, или ваша новая конструкция curl использует предыдущую установку libcurl. Invoke 'curl --version' и убедитесь, что он содержит список HTTP2, который поддерживается (входит в состав функций).

Вам также необходимо убедиться, что вы создаете завиток с версией библиотеки TLS, поддерживающей ALPN (для HTTP/2 через TLS). Если вы создаете с помощью openssl, вам нужна версия 1.0.2 (или более поздняя версия).

Я только что попробовал сейчас на https://http2.akamai.com/, и он говорит: «Вы используете HTTP/2 прямо сейчас!» просто прекрасно, когда я пытаюсь мой локон построить на нем, как это:

$ curl --http2 -kv https://http2.akamai.com/ 

Вы можете просмотреть подробный вывод, и вы должны увидеть предложение ALPN и что локон протокол и сервер согласны использовать.

+0

Да, HTTP2 указан как функция. Вот полный вывод: 'localhost: ~ svenkeinath $ curl --version curl 7.41.0 (x86_64-apple-darwin14.3.0) libcurl/7.41.0 OpenSSL/0.9.8zd zlib/1.2.5 nghttp2/0.7. 7 Протоколы: файл dict ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Особенности: IPv6 Largefile NTLM NTLM_WB SSL libz HTTP2 UnixSockets ' –

+0

Да :) Спасибо! Реконструкция cURL с помощью. ./Configure --with-ssl =/usr/local/Cellar/openssl/1.0.2a-1/'сделала трюк. –

+0

так .... что вы будете делать, если вы установили библиотеку http2 c и curl не показывает протокол http2 как доступный? – fideloper

0

Эта страница, вероятно, включена в белый список для определенных браузеров, поддерживающих HTTP/2, поэтому она возвращает статический контент, поскольку он не распознает cURL. Вы можете set your user agent притвориться, что вы Chrome, например.

curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/41.0.742.112 Safari/534.30" --http2 https://http2.akamai.com/ 
+0

Я получил доступ к UA из старой Motorola Razor, и он работал нормально: «MOT-V9mm/00.62 UP.Browser/6.2.3.4.c.1.123 (GUI) MMP/2.0' – Misunderstood

+0

Нет, никто из них не работал. Это не только проблема с этой конкретной страницей - я также пробовал ее с твиттером и некоторыми другими. –

+0

Что я говорил, это не имеет никакого отношения к пользовательскому агенту. Я переключил UA в fireFox, отключил JavaScript, и он по-прежнему был совместим с HTTP2. – Misunderstood