COOKIE 、session、web储存
有点罗嗦,感兴趣请细看;否则直接看cookie、session、web储存机制的 演示 。
我们在浏览器里搜索了“移动硬盘”,打开头条,头条广告里竟然看到了移动硬盘相关的广告;我们逛了淘宝,再次登录头条时竟然看到了昨天反复挑选了好几次的冬装;这是巧合?
不,这是一种本地储存共享机制。分别是:cookie、session、web储存机制。
cookie、session、web储存机制发展史:
由于互联网连接是无状态的,我们登录了淘宝,淘宝不知道我们是谁。为了解决这个问题,才有了cookie。
但是cookie是保存在本地的,比如某APP允许一个账号只投票一次,头条后记录cookie,我们下次登录投票就告诉我们,已经投 过票 了。只要清楚浏览器cookie,又能再次”刷票“。
为了解决这类缺陷,出现了session,session是保存服务器上的,本地也有一份记录。当你登录淘宝后,每购买一次货物,不必再次输入密码账号重新登录,因为服务器只要对比你的session状态就能判断出来是你在登录。
web储存机制是最近的H5时代产物,又叫本地储存,通过本地存储(Local Storage),web 应用程序能够在用户浏览器中对数据进行本地的存储。
在 HTML5 之前,应用程序数据只能存储在 cookie 中,包括每个服务器请求。本地存储则更安全,并且可在不影响网站性能的前提下将大量数据存储于本地。
与 cookie 不同,存储限制要大得多(至少5MB),并且信息不会被传输到服务器。
本地存储经由起源地(origin)(经由域和协议)。所有页面,从起源地,能够存储和访问相同的数据。
通过大量的实践证明,cookie并没有淘汰,session机制并没有受到绝对欢迎,web本地储存也没有大肆应用。
cookie里,通常存放一些访问信息,比如淘宝购物车,商品浏览信息……session里存放登录状态,用户操作……本地存储(Local Storage)里放着常用缓存文件,比如全局JS、CSS、图片编码。也会放一些用户足迹,访问时间……留作大数据分析。
cookie、session、web储存的演示
cookie:模仿你购物车里有个货物,是intel i7 CPU。
结算时候,显示出了你的购物车信息,没有什么不妥。
这时候,我新建了一个demo2.php
并没有设置cookie,直接读取cookie,发现demo.php创建的cookie被demo2.php读取走了
你或许说,同一个服务器下,这种操作是存在的。
举个例子:A公司和B公司建立商务关系,A公司的购物用户车信息由A公司控制(已加密);B公司需用当前用户的购物信息时,就借助A公司提供的接口读取你的购物车。
那么,B公司怎么知道我使用过A公司的购物车?蠢哭,你用自己的手机号注册了A公司,又注册了B公司,B公司会通过商务合作的方式查询A公司用户数据库,检索出你的账号资料。
浏览器禁用cookie会怎么样呢?
运行结果: 您的浏览器不支持COOKIE
不上图了,正在发稿,禁用cookie会强制退出登录。
session呢?他是干嘛的?
PC登录QQ后,我们不需要接受验证码或者扫码允许,就能登录邮箱、QQ空间……这些都是session的功劳,能让网络方便,安全地服务用户。
session同cookie一样,是可以共享的,大公司的session就单独存放在一台台的服务器上,用户在应用A登录,即可同步进应用B(要求同一台客户端,也就是说同一台电脑或者手机),不要怀疑这不科学,人家的APP安装进你的客户端,眼睁睁地盯着你的机子,看你会耍什么花样。授权机制复杂,分布式的各种大系统总有漏洞的
大名鼎鼎的tencent也没有另外。
本地储存呢?又是什么?
是一种本地数据库,这个一般不用来共享信息,普遍存放JS、CSS。比如你访问某网站,每次打开都要加载一个图标,多浪费流量啊,干脆保存进web本地储存得了!
没什么,这是时代发展的趋势
我们担心转基因食品时候,不知不觉已经吃了很久的转基因玉米了。我们担心大数据来临,隐私得不到保护的时候,却享受着大数据的服务。
淘宝购物车,百度的”你可能感兴趣“都是大数据的计算结果。
当你用手机百度了”打死不能描述的事情“,第二天登录公司的电脑,和同事们一起上网查资料,突然出现昨晚你百度的内容,请问你会怎么办?
防患于未然:百度”打死也不能让别人知道的事“的时候,请退出百度登录账号,百度完了清除cookie,历史记录。然后微微一笑,表示自己已经掌握了车技。