POST going through but returning cached page ?

Mark S. mark.staudinger at nyi.net
Thu Dec 17 17:22:32 CET 2015



On 12/17/15 9:49 AM, Xavier Cardil Coll wrote:
> Hi, I am using this config for a wordpress-woocommerce with 
> mod_pagespeed, but something weird happens on when I try to log in or 
> register a user. I have made sure the /my-account/ is not cached and 
> that the POST request to send the data at login / register is not 
> cached, actually it works. Users login and register, but after one of 
> those actions, the server returns the same form page with the form 
> being empty, while it should return the "my account" page with the 
> data of the user logged in. Can you please shed some light ?
>
> Here is the pasta of my config : http://pastebin.com/3NnW0Sbp
>
> Thanks !
>
> -- 

Hi Xavier,

Two things jump out at me.

1) You have several matching rules with extraneous '*' characters. For 
example, your vcl line 91

if(req.url ~ 
"^/(cart|my-account/*|checkout|addons|logout|lost-password|product/*)"){

Since we are using the "~" match, this might be better represented by

if ( req.url ~ 
"^(cart|my-account/|checkout|addons|logout|lost-password|product/)" ) {

This isn't a problem, but it may make the usage clearer.


2) Between lines 67 and 130 you have many test cases on when to pass.   
Following that, you have a section that removes cookies, including 
WordPress cookies, with no conditions.  But I do not see any VCL above 
line 130 that issues a pass based on the presence of a WordPress cookie.

It would help to see the varnishlog of what happens after the POST/login 
and the cached page, but one likely possibility is a page load that you 
aren't matching in lines 67-130 that is arriving without the proper cookies.

I would expect to see something like this before you start un-setting 
cookies around line 140

if (req.url ~ 
"^[^?]*\.(mp[34]|rar|tar|tgz|wav|zip|bz2|xz|7z|avi|mov|ogm|mpe?g|mk[av])(\?.*)?$") 
{
     unset req.http.Cookie;
     return (hash);
}

if ( req.http.Cookie ~ "wordpress_" ) {
     return (pass);
}

This type of action might allow you to short-cut much of the "COOKIE 
MADNESS" section by wrapping in a " if req.http.Cookie " check.

Cheers,
-=Mark

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20151217/eb83f55e/attachment.html>


More information about the varnish-misc mailing list