Cookie相关知识

cookie起源

早期的 Web 应用面临的最大问题之一就是如何维持状态。简言之,服务器无法知道两个请求是否来自于同一个浏览器。当时,最简单的办法就是在请求的页面中插入一个 token,然后在下次请求时将这个 token 返回至服务器。这需要在页面的 form 表单中插入一个包含 token 的隐藏域,或者将 token 放在 URL 的 query 字符串中来传递。这两种方法都需要手动操作,而且极易出错。

当时网景通讯的一名员工 Lou Montulli,在 1994 年将 “magic cookies” 的概念应用到 Web 通讯中。他试图解决 Web 的第一个购物车应用,现在购物车成了购物网站的支柱。他的原始说明文档提供了 cookie 工作原理的基本信息,该文档后来被作为规范纳入到 RFC 2109(大多数浏览器的实现参考文档)中,最终被纳入到 RFC 2965 中。Montulli 也被授予 cookie 的美国专利。网景浏览器在它的第一个版本中就开始支持 cookie,现在所有 Web 浏览器都支持 cookie。

什么是cookie?

cookie是一些键值对,例如:ip_name:net,age:23,cookie可以有多个键值对,这些键值对一般存在浏览器在本地电脑上的磁盘上,浏览器可以操作加载,并且写进磁盘文件中,也有删除的权限。Chrome浏览器cookie文件是:C:\Users\username\AppData\Local\Google\Chrome\User Data\Default\Cookies。不过这些内容打开是看不到东西的。

怎么查看cookie?

查看浏览器的cookie,Chrome浏览器相对比较简单,将鼠标点击浏览器地址栏“安全”,如下所示:

  • 可以看到有一个“Cookie”按钮,显示正在使用57个,我们点击这个“正在使用57个”。

  • 选择一个baidu.com的网站,查看其中一个键值,名字为BDORZ的,其中有内容就是键值。

cookie有什么用?

Cookie是被设计用来保存一些站点的用户数据,这样能够让服务器为这样的用户定制内容,后者页面代码能够获取到Cookie值然后发送给服务器。比如Cookie中存储了所在地理位置,以后每次进入地图就默认定位到改地点即可,也可记录用户的一些偏好设置等等,主要是减轻一些查询操作,直接将有些内容存到cookie中,直接展示。
现在很多网站利用cookie可以做很多事,可以保存用户的访问路径,个人偏好喜欢等等,怎么利用cookie看网站的设计能力,很多网站的cookie都特别复杂,甚至有些cookie是前端js设置的,用来返回给后端做校验,大家多注意淘宝这个网站,就可以发现。

cookie是怎么产生的?

写数据到Cookie中通常是在一个页面被加载的时候,比如提交按钮被按下,后台处理完请求跳转到相应页面后会把Cookie值带回来,如下是一个例子:
+ 你在浏览器地址栏输入了一个站点,
+ 然后浏览器会在个人电脑上行查找和该站点对应的Cookie文件,如果发现了就会把里面的键值对内容全部发送给Web服务器,如果没找到则不发送cookie。
+ 页面服务器接收到了Cookie的数据后,可以利用这些数据决定返回到前台的内容(更进一步是跟Session结合使用)*
+ 如果没键值对被Web服务器接收到,站点就知道该用户没有访问过,就会为这个访问地址新建一个ID并且发送一些键值对给前台,这些值会被放在这次响应中的Header带给浏览器,浏览器端于是有了Cookie的值*
+ 任何到服务的访问和数据请求都可能很对Cookie中的键值对进行修改

cookie是有一定的时效的,并且存在浏览器上是有一定的数量要求的。
cookie在不同的网站是不一样的,他们自己设置的cookie的生成算法。

cookie 会被浏览器自动删除,通常存在以下几种原因:
- 会话 cooke (Session cookie) 在会话结束时(浏览器关闭)会被删除
- 持久化 cookie(Persistent cookie)在到达失效日期时会被删除
- 如果浏览器中的 cookie 数量达到限制,那么 cookie 会被删除以为新建的 cookie 创建空间。详见我的另外一篇关于 cookies restrictions 的博客

对于自动删除来说,Cookie 管理显得十分重要,因为这些删除都是无意识的。

参考博客

HTTP cookies 详解
知乎:Cookie 从哪里来,网站用它来干嘛?

持续更新

猜你喜欢

转载自blog.csdn.net/randompeople/article/details/80066940
今日推荐