我正在处理一个Magento网站http://www.burdastyle.co.uk/,并且在更改货币时存在问题。货币选择器应该添加一个带有“货币”键和所选货币价值的cookie,例如“USD”,“AUD”等。
该网站由nginx运行,它也使用nginx缓存。我知道这是缓存导致这不能作为缓存块的nginx conf的一部分工作:
fastcgi_hide_header "Set-Cookie";
如果我删除该行,货币选择器按预期工作,但是如果我在购物车中添加商品,而其他人查看他们的购物车,则会显示我刚添加的项目,因为它显示没有该行,所有cookie值被缓存并提供给所有最终用户。
完整的nginx缓存块是:
location @fcgi_cache {
fastcgi_pass phpfpm;
#fastcgi_cache mage;
fastcgi_cache mage_bs;
fastcgi_cache_key "$mobile_request|$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri|$cookie_currency";
fastcgi_hide_header "Set-Cookie";
if ($http_cookie !~ "X-Store=1" ) {
add_header Set-Cookie "X-Store=1; path=/";
}
fastcgi_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
fastcgi_cache_min_uses 1;
fastcgi_cache_valid 200 202 8h;
fastcgi_cache_use_stale updating error timeout invalid_header http_500;
fastcgi_cache_bypass $cookie_EXTERNAL_NO_CACHE $cookie_CUSTOMER_AUTH;
fastcgi_no_cache $cookie_EXTERNAL_NO_CACHE $cookie_CUSTOMER_AUTH;
}
我尝试添加“add_header Set-Cookie”currency = $ {cookie_currency}; path = /“;但似乎在fastcgi_hide_header行之后,$ cookie_currency变量被清除,所以这也不起作用。
任何帮助将不胜感激。先谢谢你。
答案 0 :(得分:0)
我建议您使用LiveHTTPHeaders来测试应用并解决问题。
另一方面,在设置cookie时重新添加域名。否则浏览器不会发送cookie。以下是一个示例语法:
# I set the expiricy for 24 hours
add_header Set-Cookie "currency=${cookie_currency};Domain=www.burdastyle.co.uk;Path=/;Max-Age=86400";
问候,