Cookie和Session

目录

存储位置(安全性):

存储对象及大小:

有效期


Http是一个无状态的协议,服务器无法辨别这一次请求和上一次请求是否来自同一个客户端。这样就会导致比如说,用户登录后,再跳转到其它页面,又要进行登录才行。cookie和session可以解决这样的问题。

Cookie和session都可以保存会话数据。

区别:

存储位置(安全性):

cookie存储在浏览器上,所以是不安全的,其他人可以获取存放在本地的cookie信息。用户可以禁用cookie或者删除cookie。一般不要用cookie来存储隐私数据以防泄漏。

session存储在web服务器上,安全的。但是服务在为用户生成一个seesion的时候也会生成一个sessionid,一般会放在cookie中。那么一次用户再请求的时候cookie中会携带这个seesionid,服务器就可以根据这个sessionid去查找对应的session。如果浏览器禁用了cookie,还可以通过可以(URL重写)将seesionid放在url中进行提交。服务器存储更加安全,但是会占用服务器资源,现在大型网站都有session服务器。另一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。

存储对象及大小:

一般浏览器cookie的大小不能超过4k,对于cookie的数量也有限制。而session没有大小的限制。cookie只能存储String类型,session可以存储更复杂的数据类型。

有效期

Cookie:如果不给Cookie设置有效期,那么在会话结束之后,cookie就会失效,也就是浏览器一关闭,cookie就会失效。如果设置了有效期,cookie将持久化到本地,下次访问服务器时会判断cookie是否失效,没有失效的化就带上cookie访问。记住密码功能就是通过将cookie持久化到本地实现的。服务端要删除cookie,将该cookie的最大失效设置为0。

Session:

  1. 创建时间:服务端通过HTTPServletRequest.getSession()时才创建。
  2. 销毁时间:服务器关闭、session失效(默认是30分钟)、调用session.invalidate()方法

 

你可能感兴趣的:(知识点,面试题)