1
$agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
$ch=curl_init();
   curl_setopt ($ch, CURLOPT_URL,$url );
   curl_setopt($ch, CURLOPT_USERAGENT, $agent);
   curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt ($ch,CURLOPT_VERBOSE,false);
   curl_setopt($ch, CURLOPT_TIMEOUT, 5);
   curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE);
   curl_setopt($ch,CURLOPT_SSLVERSION,3);
   curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, FALSE);
   $page=curl_exec($ch);
   //echo curl_error($ch);
   $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
   curl_close($ch);

我在我的项目中使用 cUrl。我正在获取网站的 HTTP 代码。但是当我尝试 "asdasd" ($url="asdasd") 时,返回的 HTTP CODE 是 200 。但是“asdasd”不是一个网站。为什么 HTTP CODE 是 200 ?

4

2 回答 2

1

您可能希望首先检查返回值curl_exec。它在手册中说:

TRUE成功或FALSE失败返回。但是,如果CURLOPT_RETURNTRANSFER设置了该选项,它将在成功时返回结果,FALSE在失败时返回。

因为curl_getinfo有一个旁注

如果重新使用句柄,则保留此函数收集的信息。这意味着除非此函数在内部覆盖统计信息,否则将返回先前的信息。

因此 HTTP 200 很可能是先前 cURL 调用的结果。

于 2011-01-07T16:21:06.047 回答
0

如果您在本地开发并使用自定义托管 DNS 服务,则可能会发生另一个可能的错误,那么您可能会像 OpenDNS 一样获得一些托管错误页面。

于 2011-04-08T15:45:41.017 回答