(1)cookie概念:
cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是session的实现方式之一;
cookie 用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置.如果没有设置Cookie失效日期,它的仅保存到关闭浏览器程序为止.如果将cookie对象的Expires属性设置为Minvalue,则表示cookie永远不会过期.
cookie存储的数据量很受限制,大多数浏览器支持最大容量为4K,因此不要用来保存数据集及其他大量数据.
由于并非所有的浏览器都支持Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性
(2)session概念:
是保存在服务端的一种数据结构,用来跟踪用户的状态,可以保存在数据库和文件中;
Session用于保存每个用户的专用信息. 每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID) .
它的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右).Session中的信息保存在Web服务器内容中,保存的数据量可大可小.当 Session超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低.对于小量的数据,使用Session对象保存还是一个不错的选择
二者区别:
(1)Session用于保存每个用户的专用信息,Cookie 用于保存客户浏览器请求服务器页面的请求信息;
(2)cookie保存在客户端,session保存在服务端;
(3)session默认保存在服务器的文件里面;
(4)session的运行依赖于session id,而session id保存在cookie里面,所以,如果客户端禁用cookie的话,也会导致session失效;
(5)session 可以放在 文件、数据库、或内存中都可以。
其它不可行方案:
From:包含E-mail地址;不良服务器收集E-mail地址散发垃圾邮件;很少浏览器选择发送E-mail地址
User-Agent:浏览器相关信息;对于识别用户没有太大意义;
Referer:可以说明用户之前访问过哪个网站;不能识别用户;
客户端IP地址:IP地址多用户共享;IP地址动态分配;
用户登录:可行;繁琐,每个网站都要登陆;
胖URL:无法共享URL;
cookie分类:会话cookie和持久cookie
会话cookie:临时cookie;记录用户访问站点时的偏好和设置;用户退出浏览器,cookie就被删除了;
持久cookie:持久cookie生存期更长;记录在硬盘上,重启计算机仍然在;
二者区别:过期时间,如果设置了Discard参数;或者没有设置Max-age和Expires首部就是会话cookie;
cookie工作原理:
当用户首次访问一个Web站点的时候,服务器会通过Set-cookie首部返回返回给用户一个独有的cookie,这个cookie中包含了一个name=value这样的信息构成的列表,浏览器会记住从服务器返回的Set-cookie的首部中的cookie的内容,并将cookie存储在浏览器的cookie数据库中,将来访问同一个Web站点的时候,浏览器会选择该Web站点对应的cookie,并在一个cookie请求首部中将它传回去;
不同浏览器使用不同的cookie
浏览器只向服务器发送服务器产生的那些cookie;因为发送所有的cookie会低效且不安全;
cookie的属性
(1)Domain属性:
产生cookie的服务器可以向Set-Cookies响应首部添加一个Domain属性来控制哪些站点可以看到哪些cookie;
(1)path属性:
在这个属性列出的URL前缀下所有的cookie都是有效的。