Cookie和session
- Cookie数据存放在浏览器上,session数据存放在服务器上。
- 很多浏览器都限制一个站点最多保存20个cookie,每个cookie保存的数据不超过4k
- Cookie并不是很安全,别人可以分析存放在本地的cookie进行cookie欺骗,考虑安全应该用session
- Session在一定时间内保存在服务器上,当访问增多,会占用服务器,性能降低。把一些不那么敏感的信息保存到cookie上。
- Session在浏览器关闭或者一段时间内销毁,可以通过修改setMaxInactiveInterval(int)。设置时间,int(秒)为时间整数。或是通过invalidate()方法强制结束当前会话。
- Cookie关闭就会销毁,也可以通过setMaxAge(int)方法设置销毁时间。
- 一般情况下session生成的sessionid都保存在cookie中。
Session实现原理:
服务器会为浏览器创建一个专属的session,每个session都会有一个随机id,id对应的数据通过cookie传给浏览器。浏览器再通过响应头的形式去找对应id的值。
总结:
Cookie:在客户端保存数据,不安全。只能保存字符串,且是少量数据
Session:在服务器保存数据,安全。可以保存对象数据,数据无限制。
问题:
Cookie被禁用怎么办?
解析:用户通过浏览器访问服务器,第一次访问服务器会为浏览器创建一个session对象,这个时候sessionid要写回到浏览器上,但是cookie被禁用了,写不进去。
解决:通过response响应数据,把id响应到客户端,客户端下次在请求可以通过URL?方式找到对应的值