Is there a way to force exit vcl_recv?

Eyal Marantenboim eyal.marantenboim at storecast.de
Mon Sep 11 11:35:28 UTC 2017


On 11. September 2017 at 11:44:27, Dridi Boukelmoune (dridi at varni.sh) wrote:

On Mon, Sep 11, 2017 at 10:52 AM, Eyal Marantenboim
<eyal.marantenboim at storecast.de> wrote:
> Hi,
>
> We are trying to have varnish respond to all OPTIONS method requests.
These
> requests should not go to any backend. They should return the CORS headers

> with an empty body, always (cors headers are added in vcl_deliver).
>
> Our problem is that, because of the logic that follows in the config,
> Varnish still ends up picking a backend and adding body, etc.
>
> I would like to avoid adding everywhere 'if req.method != OPTIONS'..
>
> Is there a way in vcl_recv to do something like this:
>
> if (req.method ~ "(OPTIONS)"){
> // dont pick backend, finish vcl_recv processing and jump directly to
> vcl_deliver
> }
>
> ?
>
> Thanks!

Hi,

You are looking for synthetic responses:

sub vcl_recv {
if (req.method == "OPTIONS") {
return (synth(200));
}
}

sub vcl_synth {
if (req.method == "OPTIONS") {
# set the CORS response headers
return (deliver);
}
}

Dridi


Exactly what I was looking for.  Thanks!!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20170911/4d9edf57/attachment.html>


More information about the varnish-misc mailing list