当CURLOPT_COOKIESESSION设置为默认值时,为什么需要CURLOPT_COOKIEJAR

时间:2011-10-31 22:05:28

标签: php cookies curl

我有一个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?

我会试着理解为什么我的试错方法成功了

1 个答案:

答案 0 :(得分:1)

CURL_COOKIEJAR只是curl自动解析的cookie存储的文件。另一方面,CURL_COOKIESESSION是一个指令,告诉curl它应该忽略它存储的任何被认为是“会话”cookie的cookie。因此,要在系统上实际存储已解析的cookie,必须将CURL_COOKIEJAR设置为该位置。关于存储/加载的声明的实际含义是,默认情况下,无论cookie是否为“会话”cookie,如果它存储在cookiejar中,它将随请求一起发送。