清理localstorage_关于Cookie、Session、LocalStorage、Cache-Control(摘录)

725d3f3a183ddf71ce63ad33bc1e663c.png
关于Cookie、Session、LocalStorage、Cache-Control,在总结前先了解一个过程:当用户在一个浏览器注册账号再登录,客户端和服务器发生了什么?

一、发生了什么?

1、用户打开注册页面,提交信息(登录名、密码……)后,客户端获取用户输入的信息保存到hash表里,并发送post请求路由为/sign_up给服务器

2、服务器判断路由后进行接受数据(字符串)并将字符串转化为对象处理,保存到数据库(一个文件里),并告知用户注册成功了(后端设置返回响应,前端根据响应内容来呈现页面给用户)

3、用户打开登录页面,提交信息(登录名、密码……)发送post请求路由为/sign_in给服务器

4、服务器判断这次的提交信息(登录名、密码……)在不在数据库里。如果不在,那么告知用户去注册一个。如果在那么就将SessionID(随机数)通过cookie发给客户端。每一个SessionID对应了一个用户的信息,但返回的cookie是一个随机数,因为随机数可以提高保密度。

5、客户端再次访问服务器时,就会给带上这个cookie,发送get请求给服务器。服务器读取SessionID。

6、服务器通过SessionID找到对应用户的隐私信息,然后进行判断。如果确定是同一个用户,那么响应一个新的html文件(登录后的页面)给客户端

那么……

二、关于Cookie

Cookie是什么?举个例子:
小明(浏览器)第一次去公园(服务器)的时候,公园给了小明一张票(Cookie,包含了小明的信息)并告诉小明2天内(Cookie的有效时间)带着这个票可以免费的进出,次数不限。所以小明在这段时间内,每次去公园都得带上票。

1、Cookie的特点:

  • 服务器通过 Set-Cookie 响应头设置 Cookie
  • 浏览器得到 Cookie 之后,每次访问相同域名的网页时都要带上 Cookie
  • 服务器读取 Cookie 就知道登录用户的信息(email)
  • 大小在 4kb 以内

2、在A浏览器登录得到的Cookie,会在B浏览器带上A浏览器的Cookie吗?

NO

3、Cookie 存在哪里?

存在 C 盘的一个文件里

4、Cookie会被用户篡改吗?

可以,但 Session 来解决这个问题,防止用户篡改

5、Cookie 有效期吗?

默认有效期20分钟左右,不同浏览器策略不同。后端可以强制设置有效期,具体语法看 MDN:

HTTP cookies​developer.mozilla.org
204bcc18067e9adb14d2f5fcd6dfbb36.png

6、Cookie 遵守同源策略吗?

也有,不过跟 AJAX 的同源策略稍微有些不同:

  • 当请求 qq.com 下的资源时,浏览器会默认带上 qq.com 对应的 Cookie,不会带上 baidu.com 对应的 Cookie
  • 当请求 v.qq.com 下的资源时,浏览器不仅会带上 v.qq.com 的Cookie,还会带上 qq.com 的 Cookie

既然如此,那为什么要设置Session?

因为用户可以修改Cookie,那么就可以用别人的身份发送请求获取响应……

二、关于Session

Session是什么?继续刚刚的例子:
由于其他人可以修改票的信息拿着这张票进公园,所以公园(服务器)把所有人的信息储存在一个本子里(内存),并给每一个人的信息设置对应的随机数字(SessionID)作为票(Cookie)给用户。那么小明拿到的票就不是自己的信息而是一串随机数。当进小明再次公园的时候,公园就会核对这串随机数与本子上记录随机数进行核对。如果准确就可以进去了。

所以Session就是:

  • 将 SessionID(随机数,保密性强)通过 Cookie 发给客户端
  • 客户端访问服务器时,服务器读取 SessionID
  • 服务器有一块内存(哈希表)保存了所有 session
  • 通过 SessionID 我们可以得到对应用户的隐私信息,如 id、email
  • 这块内存(哈希表)就是服务器上的所有 session
sessions[hash.seesionId].name   //从内存里找到对应的ID,所对应的用户名

三、关于LocalStorage&SessionStorage

1、LocalStorage:

  • LocalStorage 跟 HTTP 无关
  • HTTP 不会带上 LocalStorage 的值
  • 只有相同域名的页面才能互相读取 LocalStorage(没有同源那么严格)
  • 每个域名 LocalStorage 最大存储量为 5Mb 左右(每个浏览器不一样)
  • 常用场景:记录有没有提示过用户(没有用的信息,不能记录密码)
  • LocalStorage 永久有效,除非用户清理缓存

LocalStorage的三个API:

localStorage.setItem(key,value) // 创建一个hash
localStorage.getItem(key) //得到对应的value
localStorage.clear()    //清空

应用场景(用户第一次登录网页会提示“网页即将改版”,第二次登录就不会提示了)

let already = localStorage.getItem('已经提示过了')
if(!already){alert('网页即将改版了')localStorage.setItem('已经提示过了',true)
}

2、SessionStorage(会话存储):

  • SessionStorage 跟 HTTP 无关
  • HTTP 不会带上 SessionStorage 的值
  • 只有相同域名的页面才能互相读取 SessionStorage (没有同源那么严格)
  • 每个域名 SessionStorage 最大存储量为 5Mb 左右(每个浏览器不一样)
  • SessionStorage 在用户关闭页面(会话结束)后就失效。

四、Cache-Control(缓存控制)&Expires&ETag

1、Cache-Control是对HTTP进行缓存优化的

如果想给哪个请求设置缓存,就在服务器给相关请求返回的文件设置以下代码:

response.setHeader(‘Cache-Control’,‘max-age=30’)//对某个文件设置30秒内缓存

举了例子:

  • 当Chrome浏览器第一次向服务器发送了一个路径为/main.js的请求
  • 服务器响应一个xxx文本,浏览器下载了这个文本并保存在内存中
  • 在30秒内Chrome浏览器输入同样的URL,内存返回了该文本
  • 30秒之后Chrome浏览器第三发发送请求,服务器响应文本,浏览器下载并保存这个文本你在内存中
  • ……

d7c949b7b036337ffa69322186e2a8c8.png

2、Cache-Control设置了时间,如何更新缓存?

首页不能设置Cache-Control,因为浏览器不允许,因为用户刷新后根本就不会向服务器发送任何请求。

一般其他会设置1-10年,如果中途发生改变可以更改文件请求的URL,只要URL变了就会发送新的请求。

3、Cache-Control与Expires的区别?

Cache-Control后面的时间是缓存多长时间

response.setHeader(‘Cache-Control’,‘max-age=30’)

Expires的后面几分几秒过期指的是本地时间,如果本地时间错乱了……

response.setHeader(‘Expires’,‘//GM的时间’)

4、Cache-Control与ETag 的区别?

每一个文件都会有一个对应的md5(摘要算法),如果文件有一丝丝的变动md5的值就会相差很大。啥是md5,点连接查看。

https://zh.wikipedia.org/zh-hans/MD5​zh.wikipedia.org

15081a3158584a20904574011ef6eac7.png
在1-copy.txt改了一个数字得出的结果

那么使用ETag就会响应给客户端一个md5,当客户端下一次请求时会提交一个md5给服务器,服务器判断进行判断是否要响应一个文件给客户端。如果不需要响应文件,那么返回一个304给客户端。而Cache-Control是直接不请求。

304 有请求,有响应,但是响应没有第四部分
缓存没有请求

五、几个问题

1、Cookie 和 Session 的区别?

Session是基于Cookie实现的,因为Session 必须将 SessionID(随机数)通过 Cookie 发给客户端。浏览器得到 Cookie 之后,每次访问相同域名的网页时都要带上 Cookie。

2、Cookie 和 LocalStorage 的区别?

客户端每次访问相同域名时会带上cookie,最大容量4k。而LocalStorage跟HTTP无关,所以不会带上LocalStorage的值,5Mb。

3、LocalStorage 和 SessionStorage 的区别?

LocalStorage 永久有效,除非用户清理缓存。SessionStorage在用户关闭页面(会话存储)后就失效了。

4、Cookie 如何设置过期时间?如何删除 Cookie?

Cookie设置过期时间:

  • Expires指定了一个日期/时间, 在这个日期/时间之后 Cookie 过期
  • max-age指定了一个秒数,经过此秒数后 Cookie 过期
  • 如果不设置这个标头,则默认关闭浏览器后 Cookie 过期

Cookie 的删除有不同方式:

  • 服务器端可以通过设置 Expiresmax-age 两个标签将 Cookie 设置为过期状态
  • JavaScript 可以通过document.cookie API 删除 Cookie

5、Cache-Control: max-age=1000 缓存 与 ETag 的「缓存」有什么区别?

使用ETag就会响应给客户端一个md5,当客户端下一次请求时会提交一个md5给服务器,服务器判断进行判断是否要响应第四部分内容给客户端。如果不需要响应第四部分内容,那么返回一个304给客户端。而Cache-Control是在一段时间直接不请求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

河北师范研究生计算机全国排名,2016年计算机考研院校排名

在如今这个信息化的时代了,计算机专业一直是全国各大高校的热门专业,那么计算机专业的学校排名情况怎么样呢?今天沪江小编搜集整理了2016年计算机专业大学排名情况供大家择校参考,希望对大家有所帮助。2016计算机专业大学排名计算机专业大学…

ios jsonkit 报错_iOS开源项目:JSONKit

一个Json解析库,其特点是代码简单,只有一个.h和.m文件。https://github.com/johnezang/JSONKitJSON(JavaScript Object Notation)是一个轻量级的,基于文本的,序列结构化数据格式. 由RFC 4627定义.提供以下主要类型:nul…

计算机应用能力考试xp,计算机应用能力考试XP试题及答案

二、Windows的界面(一)1、要求:利用“索引”查找关于“计划任务”的帮助信息,并打开“如何计划任务”的帮助信息:开始→帮助和支持→索引→输入“计划任务”→双击“如何计划任务”2、在对话框中显示“重置”的帮助信息:单击“&am…

联想340c笔记本cpu能升级吗_联想扬天威6 2021款酷睿版怎么样?评测值得买吗?从价格和配置看就知道了...

联想扬天威6笔记本电脑现在已经发行到最新的了,对新上市的这款联想扬天威6 2021款在配置,做工,性能全新升级了,目前是值得入手的一款轻薄办公本了,下面一起来详细了解下这款价格和配置情况,看看是不是您需要…

中职学校计算机应用基础教学初探,中职学校计算机应用基础教学初探

理 论 研 究经常 电话沟通 了解情况 ,也让家长深 入地 了解孩子 ,鼓励家长多和趣 ,培养热爱生活的观念。并充分发挥班集体的作用 ,形成一种 良孩子交流 ,对 家长 给予一定 的培训和支持 ,鼓励其采用手语 、…

热泵精馏_异丙醇丙酮氢气化学热泵技术验证示范平台建成并完成调试

近日,中国科学院工程热物理研究所传热传质研究中心超强换热团队设计研发的我国首座“异丙醇-丙酮-氢气化学热泵技术验证示范平台”在江苏省高邮市江苏杨钢特钢有限公司建成。目前,平台已完成调试,各部件和系统性能均达到预期目标。该平台是国…

广东有哪些计算机自主招生的大专学校,广州大专自主招生有哪些学校

广州大专自主招生有哪些学校自主招生又称自主选拔,是高校选拔录取工作改革的重要环节。包括国家重点大学自主招生与高职自主招生两大类。以下小编为大家整理了广州大专院校自主招生的学校,希望对大家有所帮助!广东专科自主招生学校名单1、广东…

华硕2020年显卡_TrendForce集邦咨询:2020年液晶显示器年出货成长率达5.4%,华硕成长率居冠、三星排名上升...

根据TrendForce集邦咨询旗下显示器研究处最新调查显示,受惠于疫情衍生的远距工作与教育、宅经济需求,加上北美地区消费力道持续强劲,推升以消费市场为主的液晶显示器品牌厂出货表现逆势上扬,连续三年呈现成长态势,预估…

计算机软件性能测试的过程,性能测试过程的规范

文档控制日期版本说明作者2006-4-71创建陈世明Ŀ设计ʵʩ分析总体分析工作内容生成文档人员需求表单测试过程阶段测试案例文档测试报告文件测试报告文件测试报告文件测试分析文件测试分析文件测试分析文件整个项目的分析报告性能测试基本上分为四个主要阶段:此阶段主要用于测试…

如何在验证集加噪声_B端硬件如何开展产品测试?

B端硬件产品如何开展测试过程,是摆在产品管理和技术研发管理过程的要事。产品测试是产品生命周期中及其重要的环节,难以想象一款产品没有经过测试就推向市场的场景。尤其是B端硬件产品,整个系统较为复杂,存在系统性风险的程度非常…

安徽工业大学计算机考研历年分数线,安徽工业大学历年考研分数线汇总[2012-2021]...

院所名称专业代码专业名称学位类型复试分数线004机械工程学院085500机械(机械工程)专业学位289006计算机科学与技术学院085400电子信息(计算机技术)专业学位290009管理科学与工程学院087100管理科学与工程学术学位278125604物流工程与管理专业学位198010商学院125300会计专业学…

cad考试题库绘图题答案_2019年低压电工作业操作证考试最新版题库及答案(一)...

关注小程序“安全生产模拟考试一点通”练习全部题库内容,有单选,判断题,工种有第1题、【判断题】10kV以下运行的阀型避雷器的绝缘电阻应每年测量一次。A、正确B、错误正确答案:错误第2题、【判断题】220V的交流电压的最大值为380V…

计算机软件大专证,在哪报名大专证怎么报考

文章摘要:受当地对公务员管理基础要求的影响,大专证就成为了考生真正的“就业通行证”。证书所具备的行业特点与能力,以及其中各种因素的影响,使得大专学生入学成为可能,正常的入学并非应该,需要同学们通过…

图像风格迁移cvpr2020_CVPR 2020 | 浙大李俊成:用无监督强化学习方法来获得迁移能力...

作者 | 李俊成编辑 | 蒋宝尚本文是对浙江大学和加州大学圣巴巴拉分校合作完成的,被CVPR 2020收录的论文《Unsupervised Reinforcement Learning of Transferable Meta-Skills for Embodied Navigation》进行解读,相关工作已经开源。论文:http…

泰山医学院计算机文化基础,泰医 专 计算机 16级.pdf

泰医 专 计算机 16级泰山医学院2015-2016 学年第二学期《计算机网络》期末考试试卷_____ 泰山医学院2015-2016 学年第二学期 C、不同用户可以使用同一台计算机完成各自的任务__ „期 „ D 、一个用户使用计算机可以完成多项任务日 „ 《计算机文化基础》期末考试试卷(A 卷)__ „…

正交变换在基下的矩阵都是可逆阵_矩阵分析与应用(一,矩阵基础知识)

前言:花了一个半月时间学习了 北大丘维声的《高等代数》、北理史荣昌的《矩阵分析》、清华张贤达的《矩阵分析与应用》;北大与哈工大的网课。本质:(万物皆矩阵)矩阵论主要研究矩阵,对于图像、神经网络等可表…

uci大学教育转计算机,UCI加州大学尔湾分校计算机科学硕士M.S. Computer Science

计算机科学硕士M.S. Computer Science是加州大学尔湾分校研究生申请的热门专业,下面由美英港新教育重点介绍计算机科学硕士研究生的课程设置、培养目标、申请要求及学费。培养目标加州欧文大学计算机科学包括计算机系统的设计,分析和实现的理论和实践方面…

jdk1.6的项目可以用1.8吗_摩托车链条的保养项目有哪些?可以用高压水枪清洗吗?...

专业解析摩托车故障,精准推荐所需车型。大家好,我是 骑士分享 欢迎您的关注!链条作为摩托车主要的传动方式,在实际的使用中它的保养还是比较重要的,而它的保养内容主要包括松紧度的调节,链条的清洗以及适当的润滑。链条…

gridview不显示bit_色彩要求高?这款27寸2K +10.7亿色的显示器工作娱乐都适合

究竟27寸的显示器最适合什么分辨率呢?是常见的1080P还是2K或者4K呢?当然LG还有一款5K分辨率的27寸显示器但是接口仅有雷电3。几款不同分辨率的27寸显示器用下来,其实我发现对大多数用户来说27寸和2K分辨率更配(有专业工作需求的仍…

计算机组成原理刘红玲,计算机组成原理/21世纪高等学校规划教材

目录前言 章 计算机系统概论 1.1 计算机的发展及其应用 1.2 计算机系统的组成 1.3 计算机的分类和主要性能指标 1.4 计算机系统的层次结构 1.5 计算机组成、体系结构及计算机组成原理研究的内容 习题 第2章 计算机中的数据表示 2.1 数据、信息 2.2 数值数据的表示 …