Cookie
1、服务器通过Set-Cookie头信息指示客户端保存Cookie
2、客户端通过Cookie头信息传送cookie到服务器
Cookie是客户端的存储空间,由浏览器来维持。具体来说Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器,是一种在客户端保持状态的方案。
Cookie指某些网站为了辨别用户身份、进行session跟踪而存储在用户本地终端上的数据(通常经过加密)。
Cookie的实现过程:
Cookie会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通过客户端保存Cookie, 当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送过去。
Cookie是服务器生成的,但是发送给客户端,并由客户端保存。客户端再次请求该服务器时,客户端自动将Cookie加入请求报文中,服务器端发现客户端发送过来的Cookie后,会去检查从哪一个客户端发送过来的连接请求,然后对比服务器上的记录,最后得到之前的状态消息。
Session
Session(会话),是另一种记录客户状态的机制,不同的是Cookie是保存在客户端浏览器的,而Session是保存在服务器上的。
客户端浏览器第一次访问服务器时,服务器自动生成了一个HashTable和一个Session ID用来唯一标识这个HashTable,并将其通过响应发送到浏览器。当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的HashTable。
虽然Session保存在服务器上,对客户端是透明的,它的正常运行仍然需要客户端浏览器的支持。这是因为Session需要使用Cookie作为标志。HTTP协议是无状态的,Session不能根据HTTP连接来判断是否为同一客户,因此服务器向客户端发送一个名为JSESSIONID的Cookie,它的值为该Session的id(即放在HTTP响应报文头部信息里的Set-Cookie)。Session依据该Cookie来识别是否为同一客户。
Cookie和Session的区别
- Cookie数据保存在客户端的浏览器上,Session数据放在服务器上;
- 单个Cookie在客户端的限制是3k,也就是说一个站点在客户端存放的COOKIE不能超过3K
- Cookie 不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
- Session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。