セッション Cookie と投稿フィールドの情報を維持しながら、リダイレクトをたどることに問題があります。プロセスは次のようになります。
1) URL にアクセスすると、Cookie と 302 応答が返されます (今アクセスしたのと同じ URL を指しています)。
2) 提供された Cookie を使用して URL に再度アクセスすると、適切なページが表示されます。
で適切なページに移動できますがCURLOPT_FOLLOWLOCATION = true
、リダイレクトをたどると CURL は投稿フィールドを保持しないので、ページに有用なコンテンツがありません。
Cookie を手動で保存し、保存した Cookie を使用して自分で「リダイレクト」を実行しようとしましたが、この方法では 302 リダイレクトを通過して適切なページに移動することはありません。ここに記載されている手動メソッドのコードは以下のとおりです。
$tmp_name = tempnam('tmp', 'COOKIE');
$url = "MY_URL";
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_REFERER => $url,
CURLOPT_HEADER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => array(
'field1' => 'postfield1',
'field2' => 'postfield2',
),
CURLOPT_VERBOSE => true,
);
// Make the first request, specifying where to store the cookie
// This request returns the cookie and the 302 response
$ch = curl_init($url);
curl_setopt_array($ch, $options);
curl_setopt($ch, CURLOPT_COOKIEJAR, $tmp_name);
$resp1 = curl_exec($ch);
// Make the second request, using the cookie stored above
// Should return the proper page, but gives me the 302 again instead.
$ch = curl_init($url);
curl_setopt_array($ch, $options);
curl_setopt($ch, CURLOPT_COOKIEFILE, $tmp_name);
$resp2 = curl_exec($ch);
上記のコードの何が問題なのか、またはタスクを達成する別の方法があるかどうかを知っている人はいますか?