2017-09-06 95 views
0

因此,我在尝试设置Cookie时收到了一些奇怪的结果。Cookie似乎穿越了浏览器

我需要设置一个cookie,以便我可以在php中进行一些处理。

下面是代码设置cookie(位于头):

/* 
* Check webp support 
*/ 
Modernizr.on('webp', function (result) { 
    if (result) { 
    deleteCookie('webpsupport'); 
    setCookie("webpsupport", "yes", "365"); 
    console.log("webp support"); 
    } 
    else { 
    deleteCookie('webpsupport'); 
    console.log("webp no support"); 
    } 
}); 

function setCookie(cname, cvalue, exdays) { 
    var d = new Date(); 
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); 
    var expires = "expires="+d.toUTCString(); 
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 
} 

var deleteCookie = function(name) { 
    document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 
}; 

Noew使用PHP代码IM:

$patterns = array("/.jpg/", "/.jpeg/", "/.png/"); 
if (isset($_COOKIE['webpsupport']) && $_COOKIE['webpsupport'] == "yes") 
    $thePostThumbUrl = preg_replace($patterns, "_result.webp", $thePostThumbUrl); 

所以,问题是,如果我首先将它加载铬显示.webp图像。 控制台消息是webp support

现在,如果我加载网站边缘webp iamges显示。 控制台消息是webp no support

现在为奇怪的部分。 如果我逆转这个过程,那么请清除网站上的缓存,然后加载边缘显示的原始.jpg扩展名。但是,如果我然后以铬形式加载网站,则也会显示图像的.jpg版本。

这个让我感到莫名其妙,看起来挺直的。

另外在边缘调试器中,我可以确认cookie不存在。那么PHP代码如何运行@。@

任何人都遇到类似这样的事情。

UPDATE如果我用这个代码,它回声出来是: if (isset($_COOKIE['webpsupport'])) echo $_COOKIE['webpsupport'];同样来自 webpsupport更改cookie的名称来webpsupported只是柜面有某种 缓存问题。但它仍然是一样的。

+0

嗯,但它的发生莫名其妙。 –

回答

0

好吧,我已经找到了发生了什么事情。

我正在使用w3总缓存插件,它创建一个页面缓存。现在这似乎是存储cookie,所以当我使用另一个浏览器时,我得到了意想不到的结果。

现在W3的总缓存有一个设置,以排除从缓存页面(页面缓存设置)是否存在像这样的饼干:

enter image description here

现在有了这个问题,没有页面会高速缓存,这违背了页面缓存的目的。

但这是我的问题,我希望它可以帮助别人。

我们找出解决这个问题的方法:(从我读了关于cookies这是不可能让他们的浏览器之间传输