HTML5学习之关于Cookie的expires过期时间无效分析

在学习Cookie的过程中发现Cookie设置过期时间后,过了设定时间Cookie并不会自动删除,重启浏览器甚至是重启电脑后重新打开网页还是不会自动删除,在百度等其他网站控制台设置也一样结果.对此现象我展开了深入分析.

首先在检查语法无错误的情况下,直接在控制台上输入

document.cookie = ‘aa=bb;expires=‘+new Date()+‘;path=/‘

返回:

"aa=bb;expires=Sun Apr 29 2018 14:27:56 GMT+0800 (中国标准时间);path=/"

表明 aa这条记录会在2018年4月29日14:27:56删除

由于new Date()是获取本地运行时的时间,那么按照常理来说这条Cookie在生成1秒后就已经过期了.会直接被浏览器删除而不会出现才对.可在我再次输入document.cookie获取所有Cookie时返回aa=bb,说明此Cookie还存在没有被删除.再尝试多次后,发现即时我将时间设置为过期时间

document.cookie = ‘aa=bb;expires= Sun Apr 29 2018 10:27:56 GMT+0800 (中国标准时间);path=/‘

还是没有被删除.在设置到2018 6:27:00时居然被浏览器删除了!!!

结合chrome不支持本地文件的cookie读写我提出一种假设.Cookie过期时间不是以本地时间应该是服务器时间,可浏览器如何获取服务器时间呢?突然我想到了以前看到的HTTP协议.响应的HTTP协议头部是带服务器时间的.我立马祭出抓包神器Fiddler对浏览器进行抓包.

发现果然!!!

SublimeServer架设的服务器居然不是本地时间为2018 06:57:36这正和我之前尝试得到的时间相差不远

我立马在浏览器里输入

document.cookie = ‘aa=bb;expires= Sun, 29 Apr 2018 07:00:00 GMT ;path=/‘

3分钟后查看. cookie成功被浏览器删除!!!继续在百度网页测试

浏览器Network里捕获到百度服务器时间为

Sun, 29 Apr 2018 07:08:01 GMT

百度的服务器时间居然不是北京时间!!!!!!!

增加2分钟时间后在百度网页的控制设置Cookie

document.cookie = ‘aa=bb;expires= Sun, 29 Apr 2018 08:00:00 GMT;path=/‘

等2分钟后,重新获取.aa成功被浏览器删除此问题成功解决!!!

得出结论cookie设置的过期时间是以服务器时间为基准,在浏览器得到服务器的任何HTTP响应头后会将浏览器的时间与服务器同步.而使用new Date()获取的本地时间并不准确.与服务器相差很大.本地时间可被客户修改.如果cookie使用本地时间可被人利用实现永久免登陆验.

原文地址:https://www.cnblogs.com/qfdeu/p/9015734.html

时间: 2024-07-31 02:29:15

HTML5学习之关于Cookie的expires过期时间无效分析的相关文章

设置cookie的各种过期时间

设置cookie的各种过期时间 默认cookies失效时间是直到关闭浏览器,cookies失效,也可以指定cookies时间. Response.Cookies("user_name").Expires=Date+1 '指定cookie保存时间 保留COOKIES一个小时 Response.Cookies("MyCookie").Expires= (now()+1/24) Response.Cookies("MyCookie").Expires

js cookie设置最大过期时间 Infinity

Note: 对于永久cookie我们用了Fri, 31 Dec 9999 23:59:59 GMT作为过期日.如果你不想使用这个日期,可使用世界末日Tue, 19 Jan 2038 03:14:07 GMT,它是32位带符号整数能表示从1 January 1970 00:00:00 UTC开始的最大秒长(即01111111111111111111111111111111, 是 new Date(0x7fffffff * 1e3)). 对应 js 操作 <script> //cookie fun

HTML5入门教程 :Cookie会话跟踪技术~

1. Cookie会话跟踪技术介绍 会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,可以在客户端保存临时数据. Cookie 技术诞生以来,它就成了广大网络用户和 Web 开发人员争论的一个焦点.有一些网络用户,甚至包括一些资深的 Web 专家也对它的产生和推广感到不满,这并不是因为 Cookie 技术的功能太弱或其他技术性能上的原因,而是因为 Cookie 的使用对网络用户的隐私构成了危害

采用Asp.Net的Forms身份验证时,持久Cookie的过期时间会自动扩展

问题描述 之前没有使用Forms身份验证时,如果在登陆过程中把持久的Cookie过期时间设为半个小时,总会收到很多用户的抱怨,说登陆一会就过期了. 所以总是会把Cookie过期时间设的长一些,比如两个小时甚至一天,这样就能保证在登陆时设置一次Cookie,用户可以操作很长时间也不过期. 虽然也可以在每次用户请求页面时检查Cookie的过期时间并自动扩展,但未免过于麻烦,不如一次设大点来的简单. 偶然发现 今天在使用Forms身份验证编写<AppBox-基于ExtAspNet的企业通用管理框架>

chrome会话cookie显示过期时间为1969-12-31T23:59:59.000Z

cookie不设置过期时间的话,为浏览器会话cookie,关闭浏览器自动删除cookie 但是在chrome浏览器下,cookie过期时间显示为“1969-12-31T23:59:59.000Z” 在firefox下,cookie过期时间显示为“会话”cookie chrome为啥会这样呢?不解... 原文地址:https://www.cnblogs.com/imust2008/p/9297380.html

关于jQuery的cookies插件2.2.0版设置过期时间的说明

欢迎转载,转载请注明作者RunningOn jQuery应该是各位用JavaScript做web开发的常用工具了,它有些插件能非常方便地操作cookie. 不过非常让人郁闷的是,网上几乎所有人对于这些插件所做的关于cookie过期/失效时间的说明都是含混的或不正确的.我被这玩意搞得实在不行了,去看了其中两个插件的源代码终于明白了是怎么一回事.为避免更多人中招,我就写下我RunningOn个人对这些cookie插件的理解. 首先要说明的是cookie插件国内主要流行的有两个,一个是早在2006年的

Linux-LNMP-静态元素过期时间

浏览器访问网站的图片时会把静态的文件缓存在本地电脑里,这样下次再访问时就不用去远程下载了状态码:第一次访问是200.第二次访问是304(没有再去服务器下载),增加配置<IfModule mod_expires.c> #_expires 定义过期时间ExpiresActive on //打开该功能的开关ExpiresByType image/gif "access plus 1 days" #定义类型gif,1days 过期时间ExpiresByType image/jpeg

Django设置Cookie的过期时间expires, max_age的格式

cookie中 max_age和expires的关系: 1. 若没有填写 max_age, expires ,默认都为None 此时该cooike为临时的,只存在浏览器内存中, 关闭浏览器则自动删除 2. 只有max_age, 则按秒计算过期时间, 浏览器会存在本地缓存路径, 并自动删除过期cookie 3. 只有expires, 则按照时间字符串计算过期时间, 浏览器会存在本地缓存路径, 自动删除过期cookie 3. 若 max_age和 expires 同时存在, 则默认使用 max_ag

Html5 学习系列(六)Html5本地存储和本地数据库

一个网站如何能在客户的浏览器存储更多的数据呢? 在Html4的时代在浏览器端存储点网站个性化的数据,尤其是用户浏览器的痕迹,用户的相关数据等一般只能存储在Cookie中,但是大多是浏览器对于Cookie的限制也就逼迫网站存储数据尽量精简,想存储复杂的.关系型的用户数据就根本不可能了.但是进入Html5时代,这一切都不叫事... 一.本地存储由来的背景 众所周知Html4时代Cookie的大小.格式.存储数据格式等限制,网站应用如果想在浏览器端存储用户的部分信息,那么只能借助于Cookie.但是C