HTTP协议的无状态性,所以服务器需要记录用户状态的时候,需要一种机制,这就是Session,它能够在服务器端根据Session ID记录一个用户,可以放在内存、数据库、文件等。用这个Session ID与用户信息的映射来读取用户的历史信息。
但是需要每次用户请求的时候都知道这个用户的Session ID,否则还是读不到,这时多数情况要用到客户端状态保存的Cookie(客户端Cookie被禁用就要另想办法),服务器端第一次创建Session时,服务器端会在协议中,告诉客户端Cookie记录一个Session ID,以后每次请求的时候都带上这个Session ID。如果客户端禁用Cookie了,就要使用URL重写来跟踪,每次HTTP请求,都要带上如sid=***这样的参数。
Cookie中,还可以包括其他服务器设置信息,如用户名等,同时会设置过期时间,这样在一段时间内,用户再次打开某个网页,服务器会知道用户名等信息,感觉非常友好,like a cookie。
Cookie的问题是不够安全,用户可以人为修改Cookie内容,进行Cookie欺骗,如果考虑安全性,可以使用Session。