据我了解,如果您启用 cookie,CURL 将自动为您处理会话 cookie,只要您为会话中的每个请求重用 CURL 句柄:
CURL *Handle = curl_easy_init();
// Read cookies from a previous session, as stored in MyCookieFileName.
curl_easy_setopt( Handle, CURLOPT_COOKIEFILE, MyCookieFileName );
// Save cookies from *this* session in MyCookieFileName
curl_easy_setopt( Handle, CURLOPT_COOKIEJAR, MyCookieFileName );
curl_easy_setopt( Handle, CURLOPT_URL, MyLoginPageUrl );
assert( curl_easy_perform( Handle ) == CURLE_OK );
curl_easy_setopt( Handle, CURLOPT_URL, MyActionPageUrl );
assert( curl_easy_perform( Handle ) == CURLE_OK );
// The cookies are actually saved here.
curl_easy_cleanup( Handle );
我不肯定您需要同时设置 COOKIEFILE 和 COOKIEJAR,但文档看起来就是这样。无论如何,您必须设置两者之一才能在 CURL 中启用 cookie。你可以做一些简单的事情:
curl_easy_setopt( Handle, CURLOPT_COOKIEFILE, "" );
这不会从磁盘读取任何 cookie,但会在 curl 句柄期间启用会话 cookie。