Scroll to navigation

VMOD_HEADER(3) VMOD_HEADER(3)

NAME

vmod_header - Header VMOD for Varnish

SYNOPSIS

import header [from "path"] ;
VOID append(HEADER, STRING)
VOID copy(HEADER, HEADER)
STRING get(HEADER header, STRING regex)
VOID remove(HEADER header, STRING regex)


DESCRIPTION

Varnish Module for manipulation of duplicated HTTP headers, for instance multiple Set-Cookie headers.

Example:

vcl 4.0;
import header;
backend default { .host = "192.0.2.11"; .port = "8080"; }
sub vcl_backend_response {

if (beresp.http.Set-Cookie) {
# Add another line of Set-Cookie in the response.
header.append(beresp.http.Set-Cookie, "VSESS=abbabeef");
# CMS always set this, but doesn't really need it.
header.remove(beresp.http.Set-Cookie, "JSESSIONID=");
} }


VOID append(HEADER, STRING)

Append an extra occurrence to an existing header.
:: header.append(beresp.http.Set-Cookie, "foo=bar")

VOID copy(HEADER, HEADER)

Copy all source headers to a new header.
:: header.copy(beresp.http.set-cookie, beresp.http.x-old-cookie);

STRING get(HEADER header, STRING regex)

Fetches the value of the first header that matches the given regular expression regex.
:: set beresp.http.xusr = header.get(beresp.http.set-cookie,"user=");

VOID remove(HEADER header, STRING regex)

Remove all occurences of header that matches regex.
:: header.remove(beresp.http.set-cookie,"^(?!(funcookie=))");

ACKNOWLEDGEMENTS

The development of this plugin was made possible by the sponsorship of Softonic, http://en.softonic.com/ .

Also thanks to Imo Klabun and Anders Nordby for bug reports.

BUGS

You can't use dynamic regular expressions, which also holds true for normal regular expressions in regsub().