html5学习之关于cookie的expires过期时间无效分析

qfdeu      2022-02-11     196

关键词:

在学习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使用本地时间可被人利用实现永久免登陆验.

java学习之文件io流篇

Cookie 什么是Cookie?cookie存在的原由和cookie常识原由常识cookie的创建、读取、修改、删除创建读取修改删除cookie字符串cookie域和路径cookie实现域之间的访问cookie封装   什么是Cookie? cookie存在的原由和cookie常识原由H... 查看详情

django学习之cookie和session(代码片段)

一、Cookie1.Cookie的由来2.什么是Cookie3.Cookie的原理4.查看Cookie二、Django中操作Cookie1.获取Cookie2.设置Cookie3.删除Cookie4.Cookie版登陆校验三、Session1.Session的由来2.Session流程解析四、Django中Session操作1.相关方法2.Session版登陆验证4.Django中... 查看详情

redis学习之删除策略

前置知识Redis会维护一块expires的空间,用于维护这些数据。expires中存储的是一种键值对的数据,key是对应的是数据的地址,value对应的是其到期的时间。过期数据:Redis是一种内存级数据库,所有数据均存放在内存中,内存中的... 查看详情

node学习之cookie和session

c什么是cookieCookie设计的初衷是维持浏览器和服务端的状态。http是无状态的,服务端不能跟踪客户端的状态。浏览器第一次向服务器发送请求,服务器会返回一个cookie给客户端浏览器,浏览器下一次发送请求时,会携带cookie。而n... 查看详情

《学习之道》之拖延症

书中拖延症的部分包括5、6、9章。拖延症拖延症是指非必要、后果有害的推迟行为。取意“将之前的事情放置明天”。 问:1.拖延的习惯对你的生活有影响吗?如果有,是如何影响的?2.关于别人拖延的借口,你是否听说过... 查看详情

机器学习之正则化

前言      以下内容是个人学习之后的感悟,如果有错误之处,还请多多包涵~  正则化一、过拟合     过拟合是一种现象。当我们提高在训练数据上的表现时,在测试数据上反而下... 查看详情

html5学习之浏览器的私有前缀

浏览器的私有前缀是为了兼容老版本的写法比较新版本的浏览器无需添加1.私有前缀-moz-:代表firefox(火狐)浏览器的私有属性-ms-:代表IE浏览器的私有属性-webkit-:代表safarichrome私有属性-o-:代表opera(欧朋)浏览器私有属性2.提倡写法一... 查看详情

html5学习之webwork多线程处理

多线程技术在服务端技术中已经发展的很成熟了,而在Web端的应用中却一直是鸡肋在新的标准中,提供的新的WebWorkAPI,让前端的异步工作变得异常简单。使用:创建一个Worker对象,指向一个js文件,然后通过Worker对象往js文件发... 查看详情

jsp学习之——关于请求转发和重定向的形象理解

1.重定向:是属于客户端行为,实现方法:response.sendRedirect()从本质上讲等同于两次请求,前一次的请求对象不会保留,在浏览器上的直观表现是——地址栏的URL地址会改变。2.请求转发:是属于服务器行为,实现方法:request.getR... 查看详情

机器学习之拟合和过拟合问题

过拟合:当某个模型过度的学习训练数据中的细节和噪音,以至于模型在新的数据上表现很差,我们称过拟合发生了,通俗点就是:模型在训练集中测试的准确度远远高于在测试集中的准确度。过拟合问题通常发生在变量特征过... 查看详情

html5学习之html标记类型

Keyword:MarkupType,ContainerTags,SingleTag,Attributes1.ContainerTags(容器标记)成对的开始标记(StartTag)与结束标记(EndTag),利用这两个标记将文字围住,以达到预期的效果。大部分的HTML标记都属于此类,终止标记前会加上一个正斜线“/”。... 查看详情

前端学习之html5

一、文本与段落标记<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>文本与段落标记</title></head><body><h1>欢迎来到HTML5</h1><br><hrwidth= 查看详情

web前端学习之html5新增页面元素

mark标记与time标记记号mark标记用来定义带有记号的文本。在需要突出显示文本时可以使用mark标记。此标记对关键字做高亮处理(黄底色标注),突出显示,标注重点,在搜索方面可以应用。      时间time标... 查看详情

html学习之html5新标签(代码片段)

html5新标签2.新的语义结构元素标签名display说明articleblock定义文档中的文章。没有特殊样式asideblock定义与所处内容之外的内容,但由于当前内容相关。常用于设置侧边菜单栏dialogblock默认情况下display:none,可以通过open属性控制显... 查看详情

设计模式学习之:装饰器模式(代码片段)

最近在总结学习JavaI/O相关知识点,I/O应用的场景比较多,不仅存在各种I/O源端和想要与之通信的接收端(文件、控制台、网络链接等),而且还需要支持多种不同方式的通信(顺序、随机存取、缓冲、二进制、按字符、按行、按字... 查看详情

机器学习之回归简介

线性回归综述目的是找到一个映射,最能反映二者之间的关系。用来预测当有新的样本输入的时候,输入的结果线性回归处理的变量必须是连续的。欠拟合&过拟合过拟合跟欠拟合是ml算法表现差的两大原因欠拟合:... 查看详情

20171028机器学习之线性回归过拟合问题的解决方案

在函数中加入一个正则项: 三种方式:一、Ridge回归(岭回归):  优点:具有较高的准确性、鲁棒性以及稳定性  缺点:求解速度慢二、Lasso回归:  优点:求解速度快(原理降维计算,把数据维度中存在的噪音和... 查看详情

tensorflow学习之使用dropout解决overfitting(过拟合)问题(代码片段)

#使用dropout解决overfitting(过拟合)问题#如果有dropout,在feed_dict的参数中一定要加入dropout的值importtensorflowastffromsklearn.datasetsimportload_digitsfromsklearn.cross_validationimporttrain_test_splitfromsklearn.preprocessi 查看详情