我在维护会话 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);
有谁知道上面的代码有什么问题,或者是否有另一种方法来完成任务?