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 自带 curl | Homebrew 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 | echo 'export PATH="/opt/homebrew/opt/curl/bin:$PATH"' >> ~/.zshrc |
确认已经切换:
1 | which curl |
输出中应包含:
1 | Features: ... HTTP2 HTTP3 ... |
验证
1 | curl -I --http3 https://http3.is/ |
返回:
1 | HTTP/3 200 |
说明已经成功通过 HTTP/3(QUIC)建立连接。
一句话总结:
- 浏览器验证:看开发者工具
Protocol: h3。 - 终端验证:使用支持
HTTP3Feature 的 Homebrew curl。 - macOS 自带的 curl 即使版本很新,也不一定支持 HTTP/3。
这篇文章是通过 ChatGPT 协助生成的。