curl --resolve似乎无能为力


35

--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,但是这种卷曲方法似乎是“正确的”方法,如果可以的话。

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

Answers:


58

似乎address需要使用数字IP地址,而不是主机名。

尝试这个:

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

这是有道理的,因为在DNS世界中,resolve意味着“从名称中获取IP地址”。
greatlysuperiorman

4

疑难解答的其他一些帮助:

确保您正在侦听协议的正确端口:http = 80; https = 443等

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

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>

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

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.