http协议本身是无状态的,需要session和cookies维护用户状态信息。cookie的功能又不完全是为了配合session的,很多网站会利用cookies做很多的业务,比如购物车,个人喜好等。往往这些cookies有一定的过期时间,所以必须要保存在磁盘中去,其实想想服务器端一定也会持久化这些信息,才能达到两者之间的交互。
1、cookie用来在客户端存储用户信息,session用来在服务器端存储用户数据,均可用于户跟踪用户状态。
2、cookie不是很安全,可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。由于存放在服务器端,session较存放在客户端的cookie来说更为安全,用户验证等重要信息一般存放于session,但cookie也可以加密来提高安全性。
3、cookie在使用脚本或用户手动删除前永久保存,最大一般为4KB,很多浏览器都限制一个站点最多保存20个cookie。session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用cookie。
4、session的实现需要cookie支持:session依赖session ID实现,而session ID存放于cookie,因此,禁用cookie之后session也会失效。但可使用其他方法实现,如:在URL中传递session ID。
5、session在服务器端可存放于文件(默认)、数据库或内存,cookies往往是没有过期时间的,所以不会持久化到磁盘,而是存放在内存中。
6、session支持各种类型对象,cookie只保存字符串。