![如何使用 curl 和 ::1 进行基于 ipv6 的环回?](https://linux22.com/image/1442918/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20curl%20%E5%92%8C%20%3A%3A1%20%E8%BF%9B%E8%A1%8C%E5%9F%BA%E4%BA%8E%20ipv6%20%E7%9A%84%E7%8E%AF%E5%9B%9E%EF%BC%9F.png)
我尝试了几种方法,但它们似乎使卷曲变得混乱。
root@testt:~# curl localhost:8080
<h1>Hello world!</h1>
<p>Boom Bam Splat</p>
root@testt:~# curl ::1:8080
curl: (3) IPv6 numerical address used in URL without brackets
root@testt:~# curl [::1]:8080
curl: (3) [globbing] bad range specification in column 2
答案1
更新:截至 2022 年 12 月 28 日,并且至少是 Curl 版本 7.68.0,人们可以像这样简单地使用 Curl,无需标志-g
,并且可以正常工作:
curl -6 "http://[::1]:8080/"
以下是较早的答案,供参考。
查看建议——并分析常见错误在这篇博文中— 也许你应该尝试一下这个。
curl -g -6 "http://[::1]:8080/"
似乎-g
是实现这一目标的神奇钥匙。正如curl
手册页:
此选项关闭“URL 通配解析器”。设置此选项后,您可以指定包含字母 {}[] 的 URL,而无需由 curl 本身进行解释。请注意,这些字母不是正常的合法 URL 内容,但应根据 URI 标准对其进行编码。
-6
仅使用 IPv6 的方法:
如果 libcurl 能够将地址解析为多个 IP 版本(如果它支持 IPv6 则可以),则此选项告诉 libcurl 仅将名称解析为 IPv6 地址。
但是阅读该功能描述,似乎-6
对于纯 IPv6 地址来说并不是真正需要的;只有当一个人在连接到 IPv4 和 IPv6 地址的主机名上使用时,curl
它才会优先使用 IPv6。只是需要注意一点。
答案2
从“curl --manual”中,我发现了这一点:
curl -g "http://[2001:1890:1112:1::20]/"
或者
curl "http://[2001:1890:1112:1::20]/"
因此,对于您询问的地址,请尝试:
curl -g "http://[::1]:8080/"
但是,您可能想要运行:
curl -V
看看 IPv6 是否出现在“Features”行上(第三行,不包括自动换行产生的额外行)。我发现我的版本没有出现。 cURL 下载页面有各种操作系统的链接,包括curl 7.41.0 下载站点(目前是最新版本)适用于 Microsoft Windows。该页面有多个可执行文件(适用于 Microsoft Windows);我发现的第一个不支持 IPv6。但两个描述为“ipv6-sspi-spnego-winssl”(一个适用于 x86,一个适用于 x64)的文件支持 IPv6:curl -V 确实显示了 IPv6。因此,请谨慎选择下载的软件包。