Session和Cookie
什么是会话跟踪技术
会话跟踪是Web程序中常⽤的技术,⽤来跟踪⽤户的整个会话。保持对⽤户会话期间的数据管理。常⽤的会话跟踪技术是Cookie与Session。
Cookie通过在客户端记录信息确定⽤户身份,Session通过在服务器端记录信息确定⽤户身份。
1. 什么是cookie
Cookie是客户端(⼀般指浏览器)请求服务器后,服务器发给客户端的⼀个辨认标识,保存在客户端,当客户端再次向服务器发送请求时,会携带着这个辨认标识,服务器就可以通过这个标识来识别客户端的身份或状态等。
Cookie的作⽤:跟踪会话,记录⼀次会话中(即Session,⼀次会话可能会有多次请求,当然也可以有多个Cookie来跟踪不同的信息)的信息,这样服务器就会知道⽤户的状态,⽐如有没有登录成功,付款时购物⻋中的东⻄等,就相当于贴在客户端脑⻔上的纸条,浏览器看不到,但服务器看得到。
2. 什么是Session
Session是另⼀种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,⽽Session保存在服务器上。
客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是Session。
客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
如果说Cookie机制是通过检查客户身上的“通⾏证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。
Session相当于程序在服务器上建⽴的⼀份客户档案,客户来访的时候只需要查询客户档案表就可以了。
Session和Cookie的区别
- Cookie数据保存在客户端(浏览器),Session数据保存在服务器端。
- Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID作为标识符来存取服务器端的Session存储空间。而SessionID这个数据是由保存在客户端中的Cookie,用户提交页面时,会将这一SessionID提交到服务器端,来存取Session数据。在生成SessionID这一过程,不是程序员干预的。也就是说,如果在客户端(浏览器)禁用了Cookie,那么Session数据也会丢失。
- Cookies是属于Session对象的一种。但又不同,Cookies不会占用服务器资源,它是存在客户端内存或者一个Cookie的文本文件中。而Session是会占用服务器资源。所以尽量不要使用Session,而使用Cookies。Cookies是保存在本机上的,但是其中信息的完全可见性且易于本地编辑性,往往可以引起很多的安全问题。但是目前很多著名的站点也都用Cookie。