DOKK / manpages / debian 12 / varnish-modules / vmod_accept.3.en
VMOD_ACCEPT(3) VMOD_ACCEPT(3)

vmod_accept - Accept VMOD

import accept [as name] [from "path"]
new xrule = accept.rule(STRING string)

VOID xrule.add(STRING string)
VOID xrule.remove(STRING string)
STRING xrule.filter(STRING string)


accept allows you to sanitize the Accept* headers (mainly Accept, Accept-Charset and Accept-Encoding) by specify one fallback string, and then adding valid values:

sub vcl_init {

new rule = accept.rule("text/plain");
rule.add("text/html");
rule.add("application/json"); }


You can then use the rule object to filter the headers. The following line will set the accept header to "text/html" or "application/json" if any of them is found in the original header, and will set it to "text/plain" if neither is found:

sub vcl_recv {

set req.http.Accept = rule.filter(req.http.Accept); }


accept will ignore any parameter found and will just return the first choice found. More info here: https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

Create a rule object, setting the fallback string.

Add string to the list of valid choices.

Remove string to the list of valid choices.

Parse string and try to find a valid choice. The first one found is returned (they are tested in the same order they were added), otherwise, the fallback string is returned.

Copyright (c) 2016 Guillaume Quintard
Author: Guillaume Quintard <guillaume.quintard@gmail.com>
(vmodtool requires this format.)