非url字符串上有200个HTTP CODE

时间:2011-01-07 16:16:01

标签: http curl http-status-codes http-status-code-200

$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 CODE。但是当我尝试“asdasd”($ url =“asdasd”)时,返回的HTTP CODE为200。但“asdasd”不是一个网站。为什么HTTP CODE是200?

2 个答案:

答案 0 :(得分:1)

您可能希望先从curl_exec检查返回值。它在the manual中说:

  

成功时返回 TRUE ,失败时返回 FALSE 。但是,如果设置了 CURLOPT_RETURNTRANSFER 选项,则会在成功时返回结果, FALSE 会失败。

对于curl_getinfo,有一个side note

  

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

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

答案 1 :(得分:0)

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