GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
VMOD_COOKIE(3) VMOD_COOKIE(3)

vmod_cookie - Varnish Cookie Module

import cookie [from "path"] ;

Handle HTTP cookies easier in Varnish VCL. (without regex)
Parses a cookie header into an internal data store, where per-cookie get/set/delete functions are available. A filter_except() method removes all but a set comma-separated list of cookies. A filter() method removes a comma- separated list of cookies.
A convenience function for formatting the Set-Cookie Expires date field is also included. If there are multiple Set-Cookie headers vmod-header should be used.
The state loaded with cookie.parse() has a lifetime of the current request or backend request context. To pass variables to the backend request, store the contents as fake bereq headers.
Filtering example:
vcl 4.0;
import cookie;
backend default { .host = "192.0.2.11"; .port = "8080"; }
sub vcl_recv { if (req.http.cookie) { cookie.parse(req.http.cookie); # Either delete the ones you want to get rid of: cookie.delete("cookie2"); # or filter everything but a few: cookie.filter_except("SESSIONID,PHPSESSID");
# Store it back into req so it will be passed to the backend. set req.http.cookie = cookie.get_string();
# If empty, unset so the builtin VCL can consider it for caching. if (req.http.cookie == "") { unset req.http.cookie; } } }


VOID clean(PRIV_TASK)
VOID delete(PRIV_TASK, STRING)
VOID filter(PRIV_TASK, STRING)
VOID filter_except(PRIV_TASK, STRING)
STRING format_rfc1123(TIME, DURATION)
STRING get(PRIV_TASK, STRING)
STRING get_string(PRIV_TASK)
BOOL isset(PRIV_TASK, STRING)
VOID parse(PRIV_TASK, STRING)
VOID set(PRIV_TASK, STRING, STRING)

Prototype
VOID clean(PRIV_TASK)
Description
Clean up previously parsed cookies. It is not necessary to run clean() in normal operations.
Example
sub vcl_recv {
        cookie.clean();
}



Prototype
VOID delete(PRIV_TASK, STRING cookiename)
Description
Delete cookiename from internal vmod storage if it exists.
Example
sub vcl_recv {
    cookie.parse("cookie1: value1; cookie2: value2;");
    cookie.delete("cookie2");
    // get_string() will now yield "cookie1: value1";
}



Prototype
VOID filter(PRIV_TASK, STRING filterstring)
Description
Delete all cookies from internal vmod storage that are in the comma-separated argument cookienames.
Example
sub vcl_recv {
        cookie.parse("cookie1: value1; cookie2: value2; cookie3: value3");
        cookie.filter("cookie1,cookie2");
        // get_string() will now yield
        // "cookie3: value3";
}



Prototype
VOID filter_except(PRIV_TASK, STRING filterstring)
Description
Delete all cookies from internal vmod storage that is not in the comma-separated argument cookienames.
Example
sub vcl_recv {
        cookie.parse("cookie1: value1; cookie2: value2; cookie3: value3");
        cookie.filter_except("cookie1,cookie2");
        // get_string() will now yield
        // "cookie1: value1; cookie2: value2;";
}



Prototype
STRING format_rfc1123(TIME now, DURATION timedelta)
Description
Get a RFC1123 formatted date string suitable for inclusion in a Set-Cookie response header.
Care should be taken if the response has multiple Set-Cookie headers. In that case the header vmod should be used.
Example
sub vcl_deliver {
        # Set a userid cookie on the client that lives for 5 minutes.
        set resp.http.Set-Cookie = "userid=" + req.http.userid + "; Expires=" + cookie.format_rfc1123(now, 5m) + "; httpOnly";
}



Prototype
STRING get(PRIV_TASK, STRING cookiename)
Description
Get the value of cookiename, as stored in internal vmod storage. If cookiename does not exist an empty string is returned.
Example
import std;
sub vcl_recv {
        cookie.parse("cookie1: value1; cookie2: value2;");
        std.log("cookie1 value is: " + cookie.get("cookie1"));
}



Prototype
STRING get_string(PRIV_TASK)
Description
Get a Cookie string value with all cookies in internal vmod storage. Does not modify internal storage.
Example
sub vcl_recv {
        cookie.parse(req.http.cookie);
        cookie.filter_except("SESSIONID,PHPSESSID");
        set req.http.cookie = cookie.get_string();
}



Prototype
BOOL isset(PRIV_TASK, STRING cookiename)
Description
Check if cookiename is set in the internal vmod storage.
Example
import std;
sub vcl_recv {
        cookie.parse("cookie1: value1; cookie2: value2;");
        if (cookie.isset("cookie2")) {
                std.log("cookie2 is set.");
        }
}



Prototype
VOID parse(PRIV_TASK, STRING cookieheader)
Description
Parse the cookie string in cookieheader. If state already exists, clean() will be run first.
Example
sub vcl_recv {
        cookie.parse(req.http.Cookie);
}



Prototype
VOID set(PRIV_TASK, STRING cookiename, STRING value)
Description
Set the internal vmod storage for cookiename to value.
Example
sub vcl_recv {
        cookie.set("cookie1", "value1");
        std.log("cookie1 value is: " + cookie.get("cookie1"));
}




Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.