Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
1 contributor

Users who have contributed to this file

139 lines (91 sloc) 2.25 KB

vmod_header

Header VMOD for Varnish

Manual section:3

SYNOPSIS

import header [from "path"] ;

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=");
    }
}

CONTENTS

  • func_append
  • func_copy
  • func_get
  • func_remove

append

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

copy

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

get

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

remove

VOID remove(PRIV_CALL, HEADER header, STRING regex)
Description
Remove all occurences of header that matches regex.
Example
:: 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().

You can’t perform that action at this time.