Cookie似乎跨越浏览器

时间:2017-09-06 01:16:31

标签: javascript php wordpress iis cookies

因此,在尝试设置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代码即时使用:

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

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

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

现在为了奇怪的部分。 如果我反转过程,那么清除网站上的缓存然后加载边缘显示原始.jpg扩展。但是,如果我在Chrome中加载网站,则还会显示图像的.jpg版本。

这个令我困惑,似乎很直接。

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

任何人遇到过这样的事情。

  

更新如果我使用此代码,它会回答是:       if (isset($_COOKIE['webpsupport'])) echo $_COOKIE['webpsupport'];还更改了Cookie名称   webpsupportwebpsupported只是出现了某种情况   缓存问题。但它仍然是一样的。

1 个答案:

答案 0 :(得分:0)

好的,我已经知道发生了什么。

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

现在,如果cookie存在,w3总缓存有一个设置可以从缓存中排除页面(在页面缓存设置中):

enter image description here

现在问题在于没有页面会被缓存,这会破坏页面缓存的目的。

但这对我来说是个问题,我希望它可以帮助别人。

现在想办法解决这个问题:(