curl --resolve 似乎什么也没做

curl --resolve 似乎什么也没做

--helpcurl 的输出列出了一个选项--resolve,其中指出

--resolve <host:port:address> Force resolve of HOST:PORT to ADDRESS

但我没有运气让它发挥作用。我尝试运行的基本命令是

curl --resolve foo.example.com:443:localhost https://foo.example.com:443/

我不断收到回复Couldn't resolve host 'foo.example.com'。我想这样做是因为我正在测试 foo.example.com 的证书,但我没有在实际服务器上测试它。相反,我在虚拟机器上测试它。我知道我可以进行编辑/etc/hosts,以便 foo.example.com 解析为 localhost,但如果我能让它工作,这种卷曲方法似乎是“正确”的方法。

有人看到我在这里做错了什么吗?

答案1

看起来需要address是数字 IP 地址,而不是主机名。

尝试这个:

curl --resolve foo.example.com:443:127.0.0.1 https://foo.example.com:443/

答案2

故障排除方面的一些额外帮助:

确保您列出了正确的协议端口:http=80; https=443 等

还将curl -v提供响应服务器的标头信息,这可能会有所帮助。

$ curl -v --resolve foo.example.com:443:127.0.0.1 https://foo.example.com:443/
## The client request headers prepended by >
> OPTIONS /v1/..
> HOSTS foo.example.com
## The server response prepended by <
< HTTP/1.1 501 Not Implemented
## The html returned
<H1>Unsupported Request</H1>

基本上在这种情况下,该OPTIONS HTTP方法没有在 CDN 的边缘服务器上实现。

答案3

我也有同样的问题。很奇怪,但似乎这取决于版本。我检查了一台服务器的curl --manual | grep resolve版本为 7.19.7,但--resolve缺少参数。在7.29.0版本中,我有这个参数,并且解析工作正常。

相关内容