--help
curl 的输出列出了一个选项--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版本中,我有这个参数,并且解析工作正常。