【发布时间】:2010-11-30 07:54:51
【问题描述】:
想象以下场景:我打开一个 CURL 连接并通过 POST 传递一些 XML-Logindata。服务器以 302 重定向回答,其中设置了会话 cookie 并将我重定向到以下“欢迎”页面。如果我启用 FOLLOWLOCATION,重定向页面上设置的 cookie 会丢失,并且欢迎页面失败并显示“会话已过期”消息。如果我禁用 FOLLOWLOCATION,我不会被重定向(显然)并获得一个带有“页面已移动到另一个位置”的 HTML 页面,其中包含一个链接,可以引导我进入欢迎页面。这在设置 cookie 时有效,但我需要遵循重定向并直接进入欢迎页面。
那么,如何维护 cookie 以确保它们设置正确?
这是我目前的代码:
$ch = curl_init('https://www.example.com/login');
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, '<some xml data>');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml; charset=UTF-8"));
curl_exec($ch);
curl_close($ch)
感谢您的帮助! ;
【问题讨论】: