当我们卷曲无法通过IPv6访问的http服务时,cURL会抛出什么错误?

时间:2014-10-31 01:50:58

标签: curl libcurl pycurl

我们提供的服务无法通过IPv6发现,因此我们必须始终通过IPv4访问它。 我想通过IPv6对端口1234上的服务做一个Http请求,我想知道cURL会抛出什么错误代码?

1 个答案:

答案 0 :(得分:1)

好吧,你可能会运行双栈。因此,curl尝试IPv6连接的唯一方法是将IPv6地址交给它进行检查。因此,如果您进行DNS查找并获得AAAA响应,那么它将通过IPv6进行尝试。如果给它A,它将通过IPv4发出。

如果要强制使用其中一个,可以使用CURLOPT_IPRESOLVE和值CURL_IPRESOLVE_V4,CURL_IPRESOLVE_V6或CURL_IPRESOLVE_WHATEVER来选择一个。

正如我所看到的那样,只有当您的主机查找返回AAAA记录时才会发生当前问题,然后您无法通过v6连接到它。对我而言,这意味着您正在监控的服务已关闭/损坏。

如果您担心过渡到V6会导致问题,那么每项服务总是2个,设置为CURL_IPRESOLVE_V4,设置为CURL_IPRESOLVE_V6。这样您就可以在两个协议上监控服务。

此外,您可能需要/想要在监控服务中设置选项,以指示他们是否希望您尝试使用IPv6 || IPv4 ||都。