|
|
HTTP::Cookies - Cookie storage and management
use HTTP::Cookies; $cookie_jar = HTTP::Cookies->new;
$cookie_jar->add_cookie_header($request); $cookie_jar->extract_cookies($response);
Cookies are a general mechanism which server side connections can use to both store and retrieve information on the client side of the connection. For more information about cookies refer to <URL:http://www.netscape.com/newsref/std/cookie_spec.html> and <URL:http://www.cookiecentral.com/>. This module also implements the new style cookies described in RFC 2965. The two variants of cookies are supposed to be able to coexist happily.
Instances of the class HTTP::Cookies are able to store a collection of Set-Cookie2: and Set-Cookie: headers and are able to use this information to initialize Cookie-headers in HTTP::Request objects. The state of a HTTP::Cookies object can be saved in and restored from files.
The following methods are provided:
file: name of the file to restore cookies from and save cookies to autosave: save during destruction (bool) ignore_discard: save even cookies that are requested to be discarded (bool) hide_cookie2: don't add Cookie2 header to requests
Future parameters might include (not yet implemented):
max_cookies 300 max_cookies_per_domain 20 max_cookie_size 4096
no_cookies list of domain names that we never return cookies to
add_cookie_header()
method will set the appropriate Cookie:-header
for the HTTP::Request object given as argument. The $request must
have a valid url attribute before this method is called.
extract_cookies()
method will look for Set-Cookie: and
Set-Cookie2: headers in the HTTP::Response object passed as
argument. Any of these headers that are found are used to update
the state of the $cookie_jar.
set_cookie()
method updates the state of the $cookie_jar. The
$key, $val, $domain, $port and $path arguments are strings. The
$path_spec, $secure, $discard arguments are boolean values. The $maxage
value is a number indicating number of seconds that this cookie will
live. A value <= 0 will delete this cookie. %rest defines
various other attributes like ``Comment'' and ``CommentURL''.
load()
method. If a
filename is not specified we will use the name specified during
construction. If the attribute ignore_discared is set, then we
will even save cookies that are marked to be discarded.
The default is to save a sequence of ``Set-Cookie3'' lines. ``Set-Cookie3'' is a proprietary LWP format, not known to be compatible with any browser. The HTTP::Cookies::Netscape sub-class can be used to save in a format compatible with Netscape.
save()
method.
discard
flag. To be
called when the user agent shuts down according to RFC 2965.
0 version 1 key 2 val 3 path 4 domain 5 port 6 path_spec 7 secure 8 expires 9 discard 10 hash
as_string()
method will return the state of the $cookie_jar
represented as a sequence of ``Set-Cookie3'' header lines separated by
``\n''. If $skip_discard is TRUE, it will not return lines for
cookies with the Discard attribute.
We also provide a subclass called HTTP::Cookies::Netscape which loads and saves Netscape compatible cookie files. You should be able to have LWP share Netscape's cookies by constructing your $cookie_jar like this:
$cookie_jar = HTTP::Cookies::Netscape->new( File => "$ENV{HOME}/.netscape/cookies", AutoSave => 1, );
Please note that the Netscape cookie file format is not able to store all the information available in the Set-Cookie2 headers, so you will probably loose some information if you save in this format.
Copyright 1997-1999 Gisle Aas
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.