zoukankan      html  css  js  c++  java
  • 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对浏览器进行抓包.

    发现果然!!!

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

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

    我立马在浏览器里输入

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

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

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

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

  • 相关阅读:
    高德地图周边搜索与搜索提示(三)
    jupyter notebook 添加目录
    Ubuntu 下简单完全卸载MySQL 以及便捷安装
    Ubuntu中安装MySQL,更改默认用户密码
    python-pip版本更新
    概率论与数理统计--->陈希孺---书籍链接下载
    机器学习实战-书籍链接下载
    Markdown安装/破解/下载
    Kaggle比赛入门比赛--Titanic-测试玩--
    python机器学习算法简介
  • 原文地址:https://www.cnblogs.com/huangqiao/p/9487421.html
Copyright © 2011-2022 走看看