0

PHP の cURL ライブラリを使用して、Cookie を含むページをリクエストする際に問題が発生しています。コードは次のとおりです。

$ch = curl_init();
$options = array(
    CURLOPT_URL => 'https://website.com/members',
    CURLOPT_HEADER => false,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_COOKIEFILE => dirname(__FILE__) . '/../../cookie.txt'
);
curl_setopt_array($ch, $options);
$response = json_decode(curl_exec($ch));
curl_close($ch);

dirname(__FILE__) . '/../../cookie.txt'PHPを使用してそのファイルの内容をダンプすることで確認したように、有効なCookieファイルを指しています。そのため、PHP にはそのファイルの読み取り権限があります (そして、そのファイルを chmod 0777 に設定して実行します)。リクエストをダンプすると、次のように表示されます。

* About to connect() to website.com port 80 (#0)
*   Trying 88.19.264.3... * connected
> GET /members HTTP/1.1
Accept: */*
Cookie: __utmz=1.1383258121.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=1; __utmb=1.8.10.1383258121; __utma=1.259269816.1383258121.1383258121.1383258121.1; sync=1; lang=en; https=1
Host: website.com

< HTTP/1.1 200 OK
< Server: nginx
< Date: Thu, 31 Oct 2013 22:36:07 GMT
< Content-Type: text/plain
< Transfer-Encoding: chunked
< Connection: keep-alive
< Keep-Alive: timeout=8
< Vary: Accept-Encoding
< Access-Control-Allow-Origin: *
<
* Connection #0 to host website.com left intact
* Closing connection #0

の内容で Cookie ヘッダーが設定されていますが、セッションの認証に必要なパラメータがありませんcookie.txtauthただし、パラメーターはファイルにauth確実に存在します。cookie.txt

なぜcURLがcookie.txtファイル内のいくつかのパラメーターのみを送信し、パラメーターを送信しないのかわかりませんauth。不要なパラメータをすべて削除しようとしましたがauth、それでも送信されません。

参考までに、authパラメータは次のようになります。

.website.com        TRUE    /       TRUE    1385850138.917861       auth    y2a4232344b4x2h403a423fgw2c443g4u2c49hg48494g4a4q2o5g4g4v274b4i4a4k5e4e4y2a4c4g4s2l56323b4d453s5946453b4t2c4y7d47336

コマンド ラインで cURL を使用して Cookie ファイルをダンプしたので、正しい形式であることがわかりました。

4

1 に答える 1

0

4. パラメータ TRUE は、Cookie が安全な接続を介してのみ送信されることを意味します。

Cookie ファイルの形式: http://curl.haxx.se/mail/archive-2005-03/0099.html

安全な Cookie について: http://en.wikipedia.org/wiki/HTTP_cookie#Secure_cookie

于 2013-10-31T23:45:03.827 に答える