J'ai repéré un comportement "curieux" php CURL qui m'envoie des noix. Fondamentalement, ce que je fais est de faire un appel digest authentifié avec curl. Voici un extrait de mon code:php curl avec digest renvoie deux réponses
curl_setopt($this->c, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($this->c, CURLOPT_USERPWD, $username . ":" . $password);
Il fonctionne très bien et le serveur est en fait en arrière avec une sorte de message « OUI, vous donnait le droit credentials ». Le seul problème, c'est que la réponse HTTP brute est un peu bizarre car elle inclut, en fait, 2 réponses au lieu d'une. Voici ce que curl_exec ($ this-> c) recrache sur:
HTTP/1.0 401 Unauthorized
Date: Tue, 23 Oct 2012 08:41:18 GMT
Server: Apache/2.2.20 (Ubuntu)
X-Powered-By: PHP/5.3.6-13ubuntu3.9
WWW-Authenticate: Digest realm="dynamikrest-testing",qop="auth",nonce="5086582e95104",opaque="4b24e95490812b28b3bf139f9fbc9a66"
Vary: Accept-Encoding
Content-Length: 9
Connection: close
Content-Type: text/html
HTTP/1.1 200 OK
Date: Tue, 23 Oct 2012 08:41:18 GMT
Server: Apache/2.2.20 (Ubuntu)
X-Powered-By: PHP/5.3.6-13ubuntu3.9
Vary: Accept-Encoding
Content-Length: 9
Connection: close
Content-Type: text/html
"success"
Je ne comprends pas pourquoi il comprend la première réponse du serveur (celui dans lequel il est dit qu'il requiert une authentification).
Quelqu'un peut-il jeter quelque lumière sur le problème? Comment éviter le cumul des réponses?
Vive
Je * exactement * le même problème. Ce commentaire n'ajoute rien à la résolution, mais je voulais que les gens sachent que ce n'est pas un problème totalement isolé. – Hezad
J'ai finalement utilisé la fonction exec() de PHP pour encapsuler les appels de ligne de commande. C'est loin d'être idéal, mais cela fonctionne bien pour le prototypage: exec ('curl --digest -u the_login: the_password the_url', $ params); Toujours en train de chercher et d'attendre une réponse. – Hezad
Je viens de le tester avec wireshark et une configuration similaire, ressemble à curl fires 2 requêtes lorsque vous utilisez l'authentification digest, et le premier est sans aucune authentification. La question est maintenant de savoir pourquoi la ligne de commande curl ignore cette réponse et php_curl l'attache. – gries