本文是《HTTP权威指南》的读书笔记
Web服务器可能同时在与数千个客户端同时进行会话,服务器需要记录下它们在与谁交谈,而不是认为所有的请求都来自于匿名客户端。在HTTP中可以有以下几种方式来对用户进行识别:
- 承载用户信息的HTTP首部;
- 客户端IP地址跟踪;
- 用户登录,用认证的方式来识别用户;
- 胖URL,在URL中嵌入识别信息;
- cookie机制,一种功能强大且持久的身份认证机制;
主要是介绍cookie机制
1 HTTP首部
下表给出了常见的用来承载用户信息的HTTP首部:
2客户端IP地址跟踪
现在好少会用到(缺点好多);
3用户登录,用认证的方式来识别用户;
服务器希望在为用户提供站点的访问之前,先行登录,则会向用户回送一个HTTP响应代码401 Login Required。然后浏览器就会显示一个登录框,并用Authorization首部在下一条对服务器的请求中提供这些信息。在接下来的请求中,浏览器会自动将这些信息添加到请求报文中。这个过程如下:
4 胖URL,在URL中嵌入识别信息;
其实就是在基本的URL中加入用户特有的信息
5 cookie机制
cookie是当前识别用户 ,实现持久会话最好的方式。cookie的存在影响了缓存,大多数缓存和浏览器都不允许对cookie内容进行缓存。cookie一般又分为 会话cookie和持久cookie。会话cookie是一种临时的cookie,它记录了用户访问站点时的设置与偏好,一般在用户退出浏览器时,会话cookie就会被删除了。持久cookie的生存时间更久一些,它保存在硬盘上,在浏览器退出或计算机重启时仍然存在,一般会持久cookie来维护用户周期性访问站点的配置文件和登录名。
会话cookie与持久cookie的唯一区别就是过期时间,如果设置了Discard参数,或没有设置Expires 或Max-Age参数来说明过期时间,这个cookie就是一个会话cookie。
5.1 cookie工作原理
cookie是服务器给用户贴的类似于标签(用来标识用户)的东西,用户访问Web站点时,Web站点就可以读取服务器贴在用户身上的标签。当用户第一次访问站点后,服务器就会给这个用户贴上一个标签(一个独有的cookie),这样以后这个用户访问这个站点时,服务器就可以识别出这个用户了。cookie中包含一个由名字=值(name=value)这样的信息构成的列表,并通过HTTP响应首部的Set-Cookie或Set-Cookie2将其贴到用户身上去。
Set-Cookie:user="mary17";domain="airtravelbargains.com"
则如果用户访问的站点为 www.airtravelbargains.com或任意以airtravelbargains.com结尾的站点,这个cookie都会被发送出去;