200 HTTP CODE à des chaînes non-url
-
30-09-2019 - |
Question
$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);
J'utilise cURL à mon projet. Je reçois CODE HTTP des sites Web. Mais quand j'essaye "asdasd" ($ url = "asdasd"), de retour HTTP CODE 200. Mais « asdasd » est pas un site Web. Pourquoi HTTP CODE 200?
La solution
Vous pouvez vérifier la valeur de retour de curl_exec
premier. Il est dit dans manuel:
retour
TRUE
sur la réussite ouFALSE
en cas d'échec. Toutefois, si l'optionCURLOPT_RETURNTRANSFER
est réglé, il renvoie le résultat en cas de succès,FALSE
en cas d'échec.
Pour curl_getinfo
il y a une note de côté :
L'information recueillie par cette fonction est maintenue si la poignée est réutilisée. Cela signifie que si une statistique est surchargée en interne par cette fonction, l'info précédente est retourné.
Alors que HTTP 200 pourrait bien être le résultat d'un appel de cURL précédent.
Autres conseils
Une autre erreur possible peut se produire si vous développez en local et vous utilisez les services de gestion DNS personnalisés, vous pouvez probablement obtenir des pages d'erreur gérées comme OpenDNS est en train de faire.