如何将curl与:: 1一起用于基于ipv6的环回?


29

我尝试了几种方法,但它们似乎使卷曲变得混乱。

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
我知道您已经选择了一个答案,但是由于此处的两个答案之间存在相似之处,请您说明使用哪种特定命令对您有用吗?
JakeGould 2015年

1
感谢您早日给出答案!我确实很难接受,因为它们既简洁又什么都没有,尽管我选择了另一个,因为与您相比,该用户才刚刚起步并首先回答。无论如何,仅使用-g选项就足够了。
hak8或

Answers:


45

查看此博客文章中的建议以及常见错误的分类,也许您应该尝试一下。

curl -g -6 "http://[::1]:8080/" 

-g似乎是神奇密钥得到这个工作。如curl手册页所述:

此选项关闭“ URL全局解析器”。设置此选项时,可以指定包含字母{} []的URL,而不会被curl本身解释。请注意,这些字母不是正常的合法URL内容,但应根据URI标准进行编码。

以及-6仅使用IPv6的方法:

如果libcurl能够将地址解析为多个IP版本(如果具有IPv6功能,则为该地址),此选项告诉libcurl仅将名称解析为IPv6地址。

但是阅读该功能说明,似乎-6对于纯IPv6地址并不是真正需要的;仅当使用curl的主机名已连接了IPv4和IPv6地址时,才希望使用IPv6。只是要注意。


OSX 10.13.3:这有效:$ curl "http://localhost:50710/file1.txt"并且不会$ curl -g -6 "http://[::1]:50710/file1.txt" 卷曲:(7)无法连接到:: 1端口50710:连接被拒绝。并$ curl -V确实显示IPv6为功能(curl 7.58.0)。我的/etc/hosts档案清单:::1 localhost
7stud

嘿,感谢您提供有关我的服务器的提示!现在,我已经将服务器绑定到ipv6地址:0.0.0.0.0.0.0.1,我可以简单地做到curl "http://[::1]:50710/file1.txt"。如果我-v为详细输出添加了一个选项,则会在输出中看到:正在尝试:: 1 ... * TCP_NODELAY set *已连接到:: 1(:: 1)端口52489(#0) -由于某种原因,我没有不需要-g选择。
18st

更多信息:将服务器绑定到ipv6主机后,我仍然可以使用curl:发出ipv4获取请求 curl -v "http://localhost:52489/file1.txt"。在输出中,我看到:正在尝试:: 1 ... * TCP_NODELAY set *连接到本地主机(:: 1)端口52489(#0) -啊,我认为这是因为我的/etc/hosts文件将名称“本地主机”解析为两个ipv4和ipv6地址。如果我尝试:curl -v "http://127.0.0.1:52489/file1.txt"那么我得到一个连接被拒绝的错误。
18st

1
@ 7stud“现在,我已经将服务器绑定到ipv6地址:0.0.0.0.0.0.0.1。”您真的不知道您在说什么。我建议写一个新问题,解释所有您在这些评论中解释的内容,看看是否有人可以帮助您。如果需要,请参考此答案。但是,如果您认为这0.0.0.0.0.0.0.1是有效的IPv6地址,那么您已经处于劣势。
JakeGould

8

从“ 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是否在显示“功能”的行中显示(第三行,不计算换行中的多余行)。我发现我的版本没有。 cURL下载页面具有用于操作系统的各种链接,包括用于Microsoft Windows的curl 7.41.0下载站点(当前是最新版本)。该页面具有多个可执行文件(适用于Microsoft Windows)。我发现的第一个不支持IPv6。但是两个被描述为“ ipv6-sspi-spnego-winssl”(一个用于x86,一个用于x64)做到了:curl -V确实显示了IPv6。因此,请注意下载哪个软件包。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.