curl / libcurl / API / curl_easy_setopt / CURLOPT_COOKIEJAR

CURLOPT_COOKIEJAR explained

Name

CURLOPT_COOKIEJAR - filename to store cookies to

Synopsis

#include <curl/curl.h>
 
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEJAR, char *filename);

Description

Pass a filename as a char *, null-terminated. This makes libcurl write all internally known cookies to the specified file when curl_easy_cleanup is called. If no cookies are kept in memory at that time, no file is created. Specify "-" as filename to instead have the cookies written to stdout. Using this option also enables cookies for this session, so if you for example follow a redirect it makes matching cookies get sent accordingly.

Note that libcurl does not read any cookies from the cookie jar specified with this option. To read cookies from a file, use CURLOPT_COOKIEFILE.

If the cookie jar file cannot be created or written to (when the curl_easy_cleanup is called), libcurl does not and cannot report an error for this. Using CURLOPT_VERBOSE or CURLOPT_DEBUGFUNCTION displays a warning, but that is the only visible feedback you get about this possibly lethal situation.

Cookies are imported in the Set-Cookie format without a domain name are not exported by this option.

The application does not have to keep the string around after setting this option.

Using this option multiple times makes the last set string override the previous ones. Set it to NULL to disable its use again.

Security concerns

libcurl cannot fully protect against attacks where an attacker has write access to the same directory where it is directed to save files. This is particularly sensitive if you save files using elevated privileges.

Default

NULL

Protocols

This functionality affects http only

Example

int main(void)
{
  CURL *curl = curl_easy_init();
  if(curl) {
    CURLcode res;
    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin");
 
    /* export cookies to this file when closing the handle */
    curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "/tmp/cookies.txt");
 
    res = curl_easy_perform(curl);
 
    /* close the handle, write the cookies */
    curl_easy_cleanup(curl);
  }
}

Availability

Added in curl 7.9

Return value

curl_easy_setopt returns a CURLcode indicating success or error.

CURLE_OK (0) means everything was OK, non-zero means an error occurred, see libcurl-errors.

See also

CURLOPT_COOKIE(3), CURLOPT_COOKIEFILE(3), CURLOPT_COOKIELIST(3)

This HTML page was made with roffit.