cqupt-yifanwu / cqupt-yifanwu.github.io

jiaoguibin.top
http://jiaoguibin.top
2 stars 0 forks source link

HTTP - Cookie #2

Open cqupt-yifanwu opened 7 years ago

cqupt-yifanwu commented 7 years ago

用户识别的技术

当你访问一个站点时,这个服务器如何来判断这个用户是谁呢?我们可能会第一个想到使用cookie,在写cookie之前,我们先来看看其他几种识别技巧。

关于cookie

cookie是识别当前用户,实现持久会话的比较好的方式。Cookie 是在 HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie 是由 Web服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息。目前有些 Cookie 是临时的(会话cookie),有些则是持续的(持久cookie)。临时的 Cookie只在浏览器上保存一段规定的时间,一旦超过规定的时间,该 Cookie 就会被系统清除。它们之间唯一的区别就是它们的过期时间(利用Expires或Max-Age参数来说明过期时间)。

cookie的工作流程

cookie就像是服务器给用户的一个标记,当用户访问一个web站点的时候,这个web站点就可以读取此服务器给用户的所有标记。用户首次访问web站点时是空白的,此时服务器会给此用户一个cookie(以便于自身以后识别此用户),cookie中包含了一个由键值对(名字=值)这样的信息构成的列表,并且通过Set-Cookie或者Set-Cookie2 HTTP响应首部将其贴到用户身上,同时会向首部添加一个Domain属性来控制哪些站点可以看到这个cookie。浏览器会记住从服务器返回的cookie内容,并将它储存在浏览器的数据库中。当用户再次访问这个站点时,浏览器会挑中响应服务器的缓存发送出去。(不同的站点使用不同的cookie,浏览器只会将对应站点的cookie发送出去)

cookie的成分与版本

cookie分为0和1两个版本,0版本是网景公司定义的,它定义了Set-Cookie响应首部和cookie请求首部以及控制cookie的字段。它的Set-Cookie首部有如下主要字段。

cookie与缓存

这一部分待扩充。

cookie in javascript

javascript是运行在客户端的脚本,因此一般是不能设置session因为session是在服务器端运行的,而cookie是在客户端的,我们来看看在javascript中对cookie的操作。

session、localstorage和sessionstorage与cookie的区别