专栏首页python3curl 支持 HTTP2

curl 支持 HTTP2

curl 命令支持 HTTP2

执行以下命令:

sudo apt-get install -y tmux curl vim wget htop git

首先使用 curl 请求 https://nghttp2.org(使用了 http2)。但是结果却是返回了 HTTP1.1 响应:

$ curl -I https://nghttp2.org/

HTTP/1.1 200 OK
Date: Fri, 04 Dec 2015 00:00:06 GMT
Content-Type: text/html
Content-Length: 6680
Last-Modified: Thu, 26 Nov 2015 15:28:33 GMT
Etag: "56572521-1a18"
Accept-Ranges: bytes
X-Backend-Header-Rtt: 0.000642
Server: nghttpx nghttp2/1.5.1-DEV
Via: 1.1 nghttpx
strict-transport-security: max-age=31536000

如果使用 http2,会给我们返回一个协议不支持的错误。

$ curl --http2 -I https://nghttp2.org/
# Unsupported protocol error

安装 nghttp2

安装 nghttp2 ad 工具(http2 的 C 库支持):

# Get build requirements
# Some of these are used for the Python bindings
# this package also installs
sudo apt-get install g++ make binutils autoconf automake autotools-dev libtool pkg-config \
  zlib1g-dev libcunit1-dev libssl-dev libxml2-dev libev-dev libevent-dev libjansson-dev \
  libjemalloc-dev cython python3-dev python-setuptools

# Build nghttp2 from source
git clone https://github.com/tatsuhiro-t/nghttp2.git
cd nghttp2
autoreconf -i
automake
autoconf
./configure
make
sudo make install

更新到最新的 curl 版本:

cd ~
sudo apt-get build-dep curl
wget http://curl.haxx.se/download/curl-7.46.0.tar.bz2
tar -xvjf curl-7.46.0.tar.bz2
cd curl-7.46.0
./configure --with-nghttp2=/usr/local --with-ssl
make
sudo make install
sudo ldconfig

通过 ldconfig 命令使得 curl 命令可以正常工作,但是你也可以尝试如下命令:

# Try this out first
curl --http2 -I nghttp2.org

# If you get errors, try setting this constant
# to tell curl where to find shared libraries
LD_LIBRARY_PATH=/usr/local/lib /usr/local/bin/curl --http2 -I nghttp2.org

测试 curl

LD_LIBRARY_PATH=/usr/local/lib /usr/local/bin/curl --http2 -k -I -H "Host: example.com" https://localhost
> HTTP/2.0 200
> server:nginx/1.9.7
> date:Fri, 04 Dec 2015 02:20:54 GMT
> content-type:text/html
> content-length:12
> last-modified:Fri, 04 Dec 2015 02:11:11 GMT
> etag:"5660f63f-c"
> accept-ranges:bytes

参考资源

原文:https://serversforhackers.com/video/curl-with-http2-support?utm_campaign=Servers%2Bfor%2BHackers&utm_medium=email&utm_source=Servers_for_Hackers_1

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python Django 协程报错,进程池、线程池与异步调用、回调机制

    concurrent.futures模块提供了高度封装的异步调用接口  ThreadPoolExecutor:线程池,提供异步调用  ProcessPoolEx...

    py3study
  • 数据库连接池DBUtils使用

      DBUtils简单说python实现的线程化数据库连接(连接池),DBUtils支持所有遵循DP-API 2规范的数据库连接模块,例如:mysql、sqls...

    py3study
  • python其他模块安装

    可以到该网站:https://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载相关文件

    py3study
  • PHP模拟发送POST请求之五curl基本使用和多线程优化

    今天来介绍PHP模拟发送POST请求的重型武器——cURL函数库的使用和其多线程的优化方法。 说起cURL函数,可谓是老生常谈,但网上许多资料都在关键部分语焉不...

    枕边书
  • 10个 ThinkPHP 开发常用代码片段

    在编写代码的时候有个神奇的汇总是好的!下面这里收集了 10+ PHP 代码片段,可以帮助你开发 PHP 项目。这些 PHP 片段对于 PHP 初学者也非常有帮助...

    php007
  • 微信开发笔记

    要实现网页版微信扫码登录必须: 1 有开发平台账号 2 网站服务已经被绑定到开发平台账号

    lilugirl
  • 可以Postman也可以cURL.进来领略下cURL的独门绝技

    cURL 是一个开源免费项目,主要是命令行工具 cURL 和 libcurl,cURL 可以处理任何网络传输协议,但是不涉及任何具体的数据处理。

    未读代码
  • PHP使用curl取HTTP状态码

    墨渊
  • 如何在 CentOS 8 上安装和使用 Curl

    curl是一个强大的命令行工具,主要用于本地和远程服务器之间传送数据。使用curl你可以使用各种协议下载或者上传数据,例如: HTTP, HTTPS, SCP,...

    雪梦科技
  • PHP使用curl取HTTP状态码

    V站CEO-西顾

扫码关注云+社区

领取腾讯云代金券