Updated: July 3, 2012 (http://curl.haxx.se/docs/http-cookies.html)
                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|


HTTP Cookies

 1. HTTP Cookies
 1.1 Cookie overview
 1.2 Cookies saved to disk
 1.3 Cookies with curl the command line tool
 1.4 Cookies with libcurl
 1.5 Cookies with javascript

==============================================================================

1. HTTP Cookies

  1.1 Cookie overview

  HTTP cookies are pieces of 'name=contents' snippets that a server tells the
  client to hold and then the client sends back those the server on subsequent
  requests to the same domains/paths for which the cookies were set.

  Cookies are either "session cookies" which typically are forgotten when the
  session is over which is often translated to equal when browser quits, or
  the cookies aren't session cookies they have expiration dates after which
  the client will throw them away.

  Cookies are set to the client with the Set-Cookie: header and are sent to
  servers with the Cookie: header.

  For a very long time, the only spec explaining how to use cookies was the
  original Netscape spec from 1994: http://curl.haxx.se/rfc/cookie_spec.html

  In 2011, RFC6265 (https://www.ietf.org/rfc/rfc6265.txt) was finally published
  and details how cookies work within HTTP.

  1.2 Cookies saved to disk

  Netscape once created a file format for storing cookies on disk so that they
  would survive browser restarts. curl adopted that file format to allow
  sharing the cookies with browsers, only to see browsers move away from that
  format. Modern browsers no longer use it, while curl still does.

  The netscape cookie file format stores one cookie per physical line in the
  file with a bunch of associated meta data, each field separated with
  TAB. That file is called the cookiejar in curl terminology.

  When libcurl saves a cookiejar, it creates a file header of its own in which
  there is a URL mention that will link to the web version of this document.

  1.3 Cookies with curl the command line tool

  curl has a full cookie "engine" built in. If you just activate it, you can
  have curl receive and send cookies exactly as mandated in the specs.

  Command line options:

  -b, --cookie

    tell curl a file to read cookies from and start the cookie engine, or if
    it isn't a file it will pass on the given string. -b name=var works and so
    does -b cookiefile.

  -j, --junk-session-cookies

    when used in combination with -b, it will skip all "session cookies" on
    load so as to appear to start a new cookie session.

  -c, --cookie-jar

    tell curl to start the cookie engine and write cookies to the given file
    after the request(s)

  1.4 Cookies with libcurl

  libcurl offers several ways to enable and interface the cookie engine. These
  options are the ones provided by the native API. libcurl bindings may offer
  access to them using other means.

  CURLOPT_COOKIE

    Is used when you want to specify the exact contents of a cookie header to
    send to the server.

  CURLOPT_COOKIEFILE

    Tell libcurl to activate the cookie engine, and to read the initial set of
    cookies from the given file. Read-only.

  CURLOPT_COOKIEJAR

    Tell libcurl to activate the cookie engine, and when the easy handle is
    closed save all known cookies to the given cookiejar file. Write-only.

  CURLOPT_COOKIELIST

    Provide detailed information about a single cookie to add to the internal
    storage of cookies. Pass in the cookie as a HTTP header with all the
    details set, or pass in a line from a netscape cookie file. This option
    can also be used to flush the cookies etc.
    
  CURLINFO_COOKIELIST

    Extract cookie information from the internal cookie storage as a linked
    list.

  1.5 Cookies with javascript

  These days a lot of the web is built up by javascript. The webbrowser loads
  complete programs that render the page you see. These javascript programs
  can also set and access cookies.

  Since curl and libcurl are plain HTTP clients without any knowledge of or
  capability to handle javascript, such cookies will not be detected or used.

  Often, if you want to mimic what a browser does on such web sites, you can
  record web browser HTTP traffic when using such a site and then repeat the
  cookie operations using curl or libcurl.
