【发布时间】: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 名称从webpsupport到webpsupported以防万一 缓存问题。但还是一样。
【问题讨论】:
-
嗯,从我读到的关于 cookie 的内容来看,它们不可能在浏览器之间传输,但它正在以某种方式发生。
标签: javascript php wordpress iis cookies