comparison mupdf-source/thirdparty/curl/docs/HTTP-COOKIES.md @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
comparison
equal deleted inserted replaced
1:1d09e1dec1d9 2:b50eed0cc0ef
1 # HTTP Cookies
2
3 ## Cookie overview
4
5 Cookies are `name=contents` pairs that a HTTP server tells the client to
6 hold and then the client sends back those to the server on subsequent
7 requests to the same domains and paths for which the cookies were set.
8
9 Cookies are either "session cookies" which typically are forgotten when the
10 session is over which is often translated to equal when browser quits, or
11 the cookies aren't session cookies they have expiration dates after which
12 the client will throw them away.
13
14 Cookies are set to the client with the Set-Cookie: header and are sent to
15 servers with the Cookie: header.
16
17 For a very long time, the only spec explaining how to use cookies was the
18 original [Netscape spec from 1994](https://curl.haxx.se/rfc/cookie_spec.html).
19
20 In 2011, [RFC6265](https://www.ietf.org/rfc/rfc6265.txt) was finally
21 published and details how cookies work within HTTP. In 2016, an update which
22 added support for prefixes was
23 [proposed](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-prefixes-00),
24 and in 2017, another update was
25 [drafted](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-alone-01)
26 to deprecate modification of 'secure' cookies from non-secure origins. Both
27 of these drafs have been incorporated into a proposal to
28 [replace](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-02)
29 RFC6265. Cookie prefixes and secure cookie modification protection has been
30 implemented by curl.
31
32 ## Cookies saved to disk
33
34 Netscape once created a file format for storing cookies on disk so that they
35 would survive browser restarts. curl adopted that file format to allow
36 sharing the cookies with browsers, only to see browsers move away from that
37 format. Modern browsers no longer use it, while curl still does.
38
39 The netscape cookie file format stores one cookie per physical line in the
40 file with a bunch of associated meta data, each field separated with
41 TAB. That file is called the cookiejar in curl terminology.
42
43 When libcurl saves a cookiejar, it creates a file header of its own in which
44 there is a URL mention that will link to the web version of this document.
45
46 ## Cookies with curl the command line tool
47
48 curl has a full cookie "engine" built in. If you just activate it, you can
49 have curl receive and send cookies exactly as mandated in the specs.
50
51 Command line options:
52
53 `-b, --cookie`
54
55 tell curl a file to read cookies from and start the cookie engine, or if it
56 isn't a file it will pass on the given string. -b name=var works and so does
57 -b cookiefile.
58
59 `-j, --junk-session-cookies`
60
61 when used in combination with -b, it will skip all "session cookies" on load
62 so as to appear to start a new cookie session.
63
64 `-c, --cookie-jar`
65
66 tell curl to start the cookie engine and write cookies to the given file
67 after the request(s)
68
69 ## Cookies with libcurl
70
71 libcurl offers several ways to enable and interface the cookie engine. These
72 options are the ones provided by the native API. libcurl bindings may offer
73 access to them using other means.
74
75 `CURLOPT_COOKIE`
76
77 Is used when you want to specify the exact contents of a cookie header to
78 send to the server.
79
80 `CURLOPT_COOKIEFILE`
81
82 Tell libcurl to activate the cookie engine, and to read the initial set of
83 cookies from the given file. Read-only.
84
85 `CURLOPT_COOKIEJAR`
86
87 Tell libcurl to activate the cookie engine, and when the easy handle is
88 closed save all known cookies to the given cookiejar file. Write-only.
89
90 `CURLOPT_COOKIELIST`
91
92 Provide detailed information about a single cookie to add to the internal
93 storage of cookies. Pass in the cookie as a HTTP header with all the details
94 set, or pass in a line from a netscape cookie file. This option can also be
95 used to flush the cookies etc.
96
97 `CURLINFO_COOKIELIST`
98
99 Extract cookie information from the internal cookie storage as a linked
100 list.
101
102 ## Cookies with javascript
103
104 These days a lot of the web is built up by javascript. The webbrowser loads
105 complete programs that render the page you see. These javascript programs
106 can also set and access cookies.
107
108 Since curl and libcurl are plain HTTP clients without any knowledge of or
109 capability to handle javascript, such cookies will not be detected or used.
110
111 Often, if you want to mimic what a browser does on such web sites, you can
112 record web browser HTTP traffic when using such a site and then repeat the
113 cookie operations using curl or libcurl.