CURLOPT_COOKIEJAR(3) Library Functions Manual CURLOPT_COOKIEJAR(3)
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(3) 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 speci-
fied with this option. To read cookies from a file, use CURLOPT_COOK-
IEFILE(3).
If the cookie jar file cannot be created or written to (when the
curl_easy_cleanup(3) is called), libcurl does not and cannot report an
error for this. Using CURLOPT_VERBOSE(3) or CURLOPT_DEBUGFUNCTION(3)
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(3) returns a CURLcode indicating success or error.
CURLE_OK (0) means everything was OK, non-zero means an error occurred,
see libcurl-errors(3).
SEE ALSO
CURLOPT_COOKIE(3), CURLOPT_COOKIEFILE(3), CURLOPT_COOKIELIST(3)
libcurl 2026-07-12 CURLOPT_COOKIEJAR(3)
Generated by dwww version 1.16 on Sat Oct 3 05:06:43 CEST 2026.