我发现了一个“奇怪的”PHP CURL行为,是送我疯了。基本上我正在做的是使用curl进行摘要验证呼叫。这里是我的代码的摘录:php curl与摘要返回两个响应
curl_setopt($this->c, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($this->c, CURLOPT_USERPWD, $username . ":" . $password);
它工作正常,并且服务器实际上是“YES,您所提供的权资格证书”之类的消息回来了。唯一的麻烦是,原始http响应有点奇怪,因为它实际上包含2个响应而不是1个响应。下面是curl_exec($这个 - > C)吐出:
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"
我不明白为什么它包括从服务器(它申明它需要身份验证的)的第一反应。
任何人都可以提出这个问题的一些亮点?我如何避免回复累计?
干杯
输出我有完全*相同的问题项使用你的PHP。这个评论没有增加任何决议,但我想让人们知道这不是一个完全孤立的问题。 – Hezad
我终于用PHP的exec()函数封装了命令行curl调用。它远非理想,但它适用于原型: exec('curl --digest -u the_login:the_password the_url',$ params); 仍在搜索并等待答案。 – Hezad
我刚刚用wireshark和类似的设置进行了测试,看起来像使用摘要认证时的卷曲触发2个请求,而第一个请求没有任何验证。 现在的问题是,为什么curl命令行忽略这个响应,并且php_curl附加了它。 – gries