macOS 自带 curl 不支持 HTTP/3?Homebrew 一键解决

TL;DR:macOS 自带 curl 没编译 HTTP/3,浏览器能连是它自己的网络栈。装 Homebrew 版:brew install curl,加到 PATH 即可。

最近在验证网站是否开启了 HTTP/3,发现一个容易踩的坑。

浏览器访问 https://http3.is/,开发者工具已经显示:

1
Protocol: h3

说明浏览器确实使用了 HTTP/3。

但终端执行:

1
curl -I --http3 https://http3.is/

却提示:

1
curl: option --http3: the installed libcurl version doesn't support this

原因很简单:macOS 自带的 curl 没有编译 HTTP/3 支持。

浏览器 vs curl

项目浏览器(Safari / Chrome)macOS 自带 curlHomebrew curl
网络栈浏览器自带系统 libcurl最新 libcurl
HTTP/2
HTTP/3
QUIC
是否推荐测试 HTTP/3

查看当前 curl 是否支持 HTTP/3:

1
curl -V

如果 Features 中没有 HTTP3,就无法使用 --http3

解决方案

安装 Homebrew 版本:

1
brew install curl

将 Homebrew 的 curl 放到 PATH 前面:

1
2
echo 'export PATH="/opt/homebrew/opt/curl/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

确认已经切换:

1
2
which curl
curl -V

输出中应包含:

1
Features: ... HTTP2 HTTP3 ...

验证

1
curl -I --http3 https://http3.is/

返回:

1
HTTP/3 200

说明已经成功通过 HTTP/3(QUIC)建立连接。


一句话总结:

  • 浏览器验证:看开发者工具 Protocol: h3
  • 终端验证:使用支持 HTTP3 Feature 的 Homebrew curl。
  • macOS 自带的 curl 即使版本很新,也不一定支持 HTTP/3

这篇文章是通过 ChatGPT 协助生成的。