【问题标题】:Cookie seems to travel cross browsersCookie 似乎可以跨浏览器旅行
【发布时间】:2017-09-06 13:53:34
【问题描述】:

所以我在尝试设置 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;';
};

注意 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 以防万一 缓存问题。但还是一样。

【问题讨论】:

  • 嗯,从我读到的关于 cookie 的内容来看,它们不可能在浏览器之间传输,但它正在以某种方式发生。

标签: javascript php wordpress iis cookies


【解决方案1】:

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

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

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

现在的问题是不会缓存任何页面,这违背了拥有页面缓存的目的。

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

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

【讨论】:

    猜你喜欢
    • 2011-08-09
    • 2011-05-09
    • 2011-01-20
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多