我有一个curl脚本,用于远程控制登录(政府)网站。该网站有一个政府范围的登录系统,在各种服务器上使用5个重定向。当我设置CURLOPT_COOKIEJAR时,我发现登录工作正常,但是我不明白为什么这是必要的。
http://www.php.net/manual/en/function.curl-setopt.php州:
CURLOPT_COOKIESESSION
TRUE将此标记为新的Cookie“会话”。它将迫使libcurl 忽略所有要加载的“会话cookie”的cookie 上一届会议。默认情况下,libcurl始终存储并加载所有 cookies,如果它们是会话cookie,则是独立的。会议 cookies是没有过期日期的cookie,它们是活着的 并仅存在于此“会话”中。
因此,默认行为似乎是检索并重新发送所有Cookie?
我会试着理解为什么我的试错方法成功了
答案 0 :(得分:1)
CURL_COOKIEJAR只是curl自动解析的cookie存储的文件。另一方面,CURL_COOKIESESSION是一个指令,告诉curl它应该忽略它存储的任何被认为是“会话”cookie的cookie。因此,要在系统上实际存储已解析的cookie,必须将CURL_COOKIEJAR设置为该位置。关于存储/加载的声明的实际含义是,默认情况下,无论cookie是否为“会话”cookie,如果它存储在cookiejar中,它将随请求一起发送。