cookie、localStorage、sessionStorage和会话控制机制
2024-10-13 15:04:43
简介
cookie
- cookie的内容主要包括:名字Name、值Value、域Domain、路径Path、过期时间Expires/Max-Age、大小Size、HTTP、Secure、SameSite
- 域:和同域策略的域不同,可以是协议、端口、域名的一部分,例如:百度的Domain
.baidu.com
- 通过响应头Set-Cookie: domain=.baidu.com 设置
- 路径:是域名的相对路径。一般为 /
- 不同对cookie项可以设置独立的所有内容
- 域:和同域策略的域不同,可以是协议、端口、域名的一部分,例如:百度的Domain
- 路径和域一起构成cookie的作用范围。
- 若不设置时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就会消失。这种生命期为浏览器会话期的cookie被称为会话cookie。 会话cookie一般不存储在硬盘而是保存在内存里,当然这个行为并不是规范规定的。
- 若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再打开浏览器这些 cookie 仍然有效直到超过设定的过期时间。
session 会话控制机制
- 当程序需要为某个客户端的请求创建一个session会话控制时
- 服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用
- 如果客户端请求不包含session id,则为客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。
- 保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。
- cookie数据存放在客户的浏览器上,session数据放在服务器上
- cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗
- session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能
- session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到
有效期
- sessionStorage:标签存在期,标签被关闭则清空。
- cookie:窗口存在期,窗口关闭则被清空。可以设置max-age属性(单位秒)延长cookie的有效期,则会保存在本地,成为长期有效。
- localStorage:永不失效,除非web应用主动删除。
- 可作为强缓存和协商缓存的补充,但是在桌面环境由于网络环境更稳定,所以协商缓存的效率反而比本地存储更高。
- 移动端为了减少网络请求可以使用,但是不能保存css文件
作用域
- sessionStorage:同源,同标签。切换标签路径,标签存在期延续,应该是指通过当前标签页链接跳转的页面会复制sessionStorage
- 同源:同一个协议、同一个域名、同一个端口
- cookie:同域,可以不同窗口、不同标签。如果设置了路径参数,那么同一域中不同路径下的cookie互相是访问不到的
- 同域和同源、同域名是不同的
- localStorage:同源,可以不同窗口、不同标签。
最新文章
- UEditor去除复制样式实现无格式粘贴
- 【转】JSP总结
- 解决Lost connection to MySQL server at 'reading initial communication packet', 的方法
- php 类 成员变量 $this->;name='abc'
- cocos2d-x c++和object-c内存管理比较
- Android ViewFlow的一个例子
- Effective C++ 第二版 8) 写operator new 和operator delete 9) 避免隐藏标准形式的new
- mysql 删除重复数据sql声明
- jquery声明
- 电商的噩梦?实体商家的福音——VR全景智慧城市
- Linux(Fedora) 安装 Oracle XE Database
- MySQL中MyISAM与InnoDB的主要区别对比
- 浅谈线程runnable和callable的使用及区别
- CAS Ticket票据:TGT、ST、PGT、PT、PGTIOU
- Python高级特性: 12步轻松搞定Python装饰器
- 在eclipse中方便的比较各个语言 资源文件—jinto的安装
- Java之List使用场景
- mui选择器和dom获取元素的区别(记得把mui对象转为dom对象才能调用用dom方法)
- 【spring mvc】application context的生命周期
- pageEncoding和ContextType区别
热门文章
- 禁止光盘优盘自动播放(Shell Hardware Detection服务)
- webview之总结2
- Spring事务管理的demo
- golang ";text/template"; 模板语法简明教程
- (转)区分LTE,EPS,EPC和SAE
- 对mysql事务提交、回滚的错误理解
- 电商系统架构总结4(webapi 版本控制)
- mysql自动创建分区
- [ORACLE]java.sql.SQLRecoverableException: IO Error: Connection rese
- 模拟python中的Yield伪并发