为什么cookie存储两次?
Why is a cookie stored twice?
我试图在cookie中存储页面上某个元素的状态,更准确地说是侧边栏的扩展或缩小状态。
我已经设法正确地存储它,它的工作,但我注意到,如果我刷新页面,从扩展或缩小状态切换侧边栏,有第二个cookie添加,具有相同的名称,但一个新的值。
日志输出如下:
expanded=false; expanded=true; PHPSESSID=2314324545
我需要cookie,这样如果用户想要进入另一个页面,他就可以看到他在前一个页面中离开的侧边栏。现在,如果我有两个同名的cookie,当我检查其值时就会出现问题。
我是这样实现的:
$('.expand-button').on('click', function(e) {
$('.pushmenu').toggleClass('expanded');
$('.navbar-left').toggleClass('expanded');
$('.navbar-left-2').toggleClass('small')
if( $(window).width()+scrollbarWidth > 1240){
$('.container.fluid-content').toggleClass('shrinked')
}
if($('.pushmenu').hasClass('expanded')) {
expandedValue = true;
document.cookie = 'expanded=' + expandedValue;
console.log(document.cookie);
} else {
expandedValue = false;
document.cookie = 'expanded=' + expandedValue;
console.log(document.cookie);
}
})
$(window).on('load', function() {
//cookie is already set
console.log(document.cookie);
if( document.cookie.indexOf('expanded=true') != -1 ) {
$('.pushmenu').toggleClass('expanded');
$('.navbar-left').toggleClass('expanded');
$('.navbar-left-2').toggleClass('small')
if( $(window).width()+scrollbarWidth > 1240){
$('.container.fluid-content').toggleClass('shrinked')
}
} else {
console.log('not doing anything');
}
})
cookie链接到路径和域名。如果每个cookie都有不同的域名,您可能会在服务器端收到两个(或更多!)cookie,例如:
.domain.org
.www.domain.org
您收到cookie的顺序是从最不合格的域名到最合格的域名(如该列表所示)
我建议你安装FireBug(假设你使用的是FireBug兼容的浏览器,比如Firefox),然后看看里面的cookie。您将看到详细信息,如路径和域名以及到期日期。
要设置路径,只需使用如下命令:
blah=value; Path=/
类似地,您可以使用:
强制域blah=value; Domain=.domain.org
可以用分号分隔多个参数:
blah=value; Path=/; Domain=.domain.org
如果你正在使用HTTPS(安全域),我强烈建议你也使用secure:
blah=value; Path=/; Domain=.domain.org; Secure
使用FireBug,你可以删除一些cookie。您可以使用第一个版本(.domain.org)或最后一个版本(.www.domain.org)。
差异可能来自于你的前端代码(JavaScript)和后端代码(PHP)。查看服务器返回的内容、查看Path和Domain是否都按照预期指定的一种方法是使用wget和-S命令行选项:
wget -S http://domain.org
wget -S http://www.domain.org
如果您同时允许"answers"www",那么您必须强制使用没有www的域:
; Domain=.domain.org
相关文章:
- Meteor Router数据函数被调用两次
- 从MySQL数据库中获取输入数据需要两次页面刷新
- Module.start()已激发两次
- Jquery点击事件必须点击两次
- Append元素在运行两次函数后不显示
- 防止双击执行两次jQuery post请求
- 我必须点击两次才能激活任何按钮操作(离子/角度)
- 单击jQuery会激发两次
- 如何避免在树上走两次
- button.单击两次删除附加操作后不工作
- 由于$compile,Javascript(Angular)嵌套指令加载了两次
- 单击元素两次后执行操作
- AngularJs正在阻止链接被点击两次
- 为什么我的路线处理程序会触发两次
- 为什么Highchart在我的rails应用程序中加载了两次?(未捕获的Highcharts错误#16)
- 在列表中至少使用两次随机生成的nr
- 检查某个键是否按下两次
- 一次点击,两次'单击'事件已启动
- 我的所有代码在使用Webpack编译时都会运行两次
- 为什么cookie存储两次?