客户端识别需求
HTTP最初是一个匿名的、无状态的请求/响应协议。服务器处理来自客户端的请求,然后给客户端回送一条响应。Web服务器几乎没有什么信息可以判断是哪个用户发送的请求,也无法记录来访用户的请求序列。
现代的Web站点希望能够提供个性化的接触。它们希望对另一端的用户有更多的了解,并能在用户浏览页面时对其进行跟踪。
客户端识别技术
- 承载用户身份信息的HTTP首部
- 客户端IP地址跟踪,通过用户的IP地址对其进行识别
- 用户登录,用认证方式来识别用户
- 胖URL,一种在URL中嵌入识别信息的技术
- Cookie,一种功能强大且高校的持久身份识别技术
Cookie详解
Cookie的诞生
Cookie最早是网景公司的前雇员Lou Montulli在1993年3月发明的。
Cookie的工作流程
- 用户向服务器发起HTTP请求,服务器在响应中通过相应头字段Set-cookie为客户端设置cookie,浏览器接收到响应缓存cookie到内存或者硬盘;
- 以后用户每次向同一服务器发送HTTP请求时,浏览器会查找有无与此域名以及路径对应的且没有过期的cookie,如果有,则将改cookie添加到请求头字段cookie。
Cookie的技术细节
最初的cookie规范是由网景公司定义的。这些“版本0”的cookie定义了Set-cookie响应首部、cookie请求首部以及用于控制cookie的字段。版本0的cookie看起来如下所示:
Set-cookie: name=value [; expires=date] [; path=path] [; domain=domain] [; secure=secure]
Cookie: name1=value1 [; name2=value2]
- Exipres:过期时间,GMT格式。如果没有设置,将在会话结束时过期;
- Domain:域名,浏览器只向与特定域匹配的服务器发送cookie。如果没有设置,将默认为当前服务器的域名;
- Path:路径,如果没有设置,将默认为产生Set-cookie响应的URL路径;
- Secure:如果包含这一属性,就只有在HTTP使用SSL安全连接时才会发送cookie。
Cookie的主要用途
判定注册用户是否已经登录网站;跟踪用户;购物车记录等等
Cookie的隐患 - 跨站脚本攻击
- Cookie欺骗