私はナッツを送信している "奇妙な" PHP CURLビヘイビアを見つけました。基本的に私がやっていることは、カールでダイジェスト認証されたコールを作ることです。ここに私のコードの抜粋です:ダイジェスト付きphp curlは2つの応答を返します
curl_setopt($this->c, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($this->c, CURLOPT_USERPWD, $username . ":" . $password);
それが正常に動作し、メッセージの種類「YES、あなたが正しい資格情報を提供する」と、サーバーが実際に戻ってきます。唯一の問題は、実際のHTTPレスポンスは、実際には1つのレスポンスではなく2つのレスポンスを含むため、ちょっと奇妙です。ここでは、curl_exec何(の$ this - > C)吐き出す:それは、サーバ(それが認証を必要と述べている1)からの最初の応答を含んでいる、なぜ私は得ることはありません
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"
。
誰も問題を投げかけてもらえますか?回答の累積を避けるにはどうすればよいですか?あなたは、ヘッダーのために-Iオプションを使用する場合はカールが同じ振る舞いを持っているように見えます
乾杯
の出力の「cURLの情報」項目から、あなたのPHPで使用されているのlibcurlのバージョンを確認することができます。このコメントは決議に何も追加していませんが、私はそれが完全に孤立した問題ではないことを人々に伝えたいと思っていました。 – Hezad
私は最終的にコマンドラインのcurl呼び出しをラップするPHPのexec()関数を使用しました。これは理想とはほど遠いですが、プロトタイプ作成にはうまくいきます。 exec( 'curl --digest -u the_login:the_password the_url'、$ params); まだ検索していますが、回答を待っています。 – Hezad
私はwiresharkと同様の設定でそれをテストしました。あなたがダイジェスト認証を使用するときにカールが2つのリクエストを起こし、最初のものが認証なしであるように見えます。 問題はcurlコマンドラインがこの応答を無視し、php_curlがそれをアタッチするのはなぜですか? – gries