清理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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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…

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分辨率更配(有专业工作需求的仍…

调用kmeans_聚类分析—KMeans

K-Means(K均值)是聚类最常用的方法之一,基于点与点距离的相似度来计算最佳类别归属。数据来源业务部门,这些数据是关于客户的,苦于没有分析入手点希望数据部门通过对这些数据的分析,给业务部门一些启示,或者提供数据后…

linux下 udf提权_mysql——udf提权

01前言udf ‘user defined function‘,即‘用户自定义函数’。文件后缀为‘.dll’,常用c语言编写。通过在udf文件中定义新函数,对MYSQL的功能进行扩充,可以执行系统任意命令。将MYSQL账号root转化为系统system权限。02思路1.将ud…

css设置 ul的内外边距,9月3日学习CSS选择器,背景设置,及内外边距知识总结

实例html>选择器p:nth-of-type(2) {background-color: crimson;}猪哥朱老师西门大官人欧阳克潘金莲运行实例 点击 "运行实例" 按钮查看在线实例演示:padding 对盒子大小的影响与解决方案!在下面html文档中,div包含了一张像素为200px的图片&…

国外ipv6服务器网站,国外 ipv6 服务器地址

国外 ipv6 服务器地址 内容精选换一换安全组创建后,您可以在安全组中设置出方向、入方向规则,这些规则会对安全组内部的云服务器出入方向网络流量进行访问控制,当云服务器加入该安全组后,即受到这些访问规则的保护。入方向&#x…

与context的关系_你还不知道 OpenGL ES 和 EGL 的关系?

什么是 EGLEGL 是 OpenGL ES 和本地窗口系统(Native Window System)之间的通信接口,它的主要作用:与设备的原生窗口系统通信;查询绘图表面的可用类型和配置;创建绘图表面;在OpenGL ES 和其他图形渲染API之间同步渲染&a…

ivew 的ajax,iView-Upload组件分析

源码分析xhr相关知识点Ajax要点分析拖拽事件以及粘贴事件具体实现总结xhr相关知识点XMLHttpRequest.upload 属性返回一个 XMLHttpRequestUpload对象,用来表示上传的进度。通过onprogress属性进行监听,是在 XMLHttpRequest 完成之前周期性调用的函数。xhr.upload.onp…

安装thymeleaf 插件_史上最详细的WordPress安装教程(四):安装mysql 5.7

安装mysql添加源rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm#或wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpmrpm -ivh mysql57-community-release-el7-9.noarch.rpm安装yum -y install mysql-community-ser…

域名与网页服务器的什么对应,简述网站从域名到网页的访问流程

简述网站从域名到网页的访问流程时间:2019-12-301384 次浏览大家对上网并不陌生,不管是IT人士还是普通大众,不管用电脑还是手机,上网已变成大家生活中的一部分。什么是上网?简单点讲就是打开网页,说的详细一…

如何修改7 服务器配置,centos7修改服务器配置

centos7修改服务器配置 内容精选换一换简要介绍Oases是一个转录组组装器,旨在没有任何基因组组装的情况下从短读测序技术生成转录本。开发语言:C一句话描述:基因组装软件开源协议:GPL 3.0建议的版本建议使用版本为最新版本&#x…