cookie
- 自动登陆,大家应该不陌生,这个功能就是使用了cookie。
- 概括的说,cookie就是一个可以帮你自动存储信息的机制,但是这些信息量并不是很大,一般也就存储登陆的用户名和密码信息,所以你二次返回该网站时候,会发现你的账户自动登陆了。
- 当你访问网页时,会检测浏览器的cookie里面是否有你登陆过的信息,如果有,浏览器就会直接跳过登陆的界面,直接向用户展示特定的登陆过后的页面。
- 但是,cookie是有风险的,因为用户的登陆信息是存储在浏览器的,用户可以在浏览器的设置里找到,cookie里寸的信息,当涉及密码一系列时候,就会出现风险,因为这些信息是对外可见可以直接访问浏览的。
- cookie有过期时间,使用方法setMaxAge()设置过期时间,当不设置时,cookie默认浏览器关闭即失效,当设置时间后,cookie就会存储在磁盘上。下次打开浏览器时候,cookie还在,过期了就自动清除了。
- cookie的不可跨域名性,cookie在客户端是由浏览器来管理的。浏览器能够保证Google只会操作Google的cookie而不会操作 Baidu的cookie,从而保证用户的隐私安全。浏览器判断一个网站是否能操作另一个网站cookie的依据是域名。Google与Baidu的域名 不一样,因此Google不能操作Baidu的cookie。
- cookie的修改、删除:Cookie并不提供修改、删除操作。如果要修改某个Cookie,只需要新建一个同名的Cookie,添加到response中覆盖原来的Cookie。如果要删除某个Cookie,只需要新建一个同名的Cookie,并将maxAge设置为0,并添加到response中覆盖原来的Cookie。注意是0而不是负数。负数代表其他的意义。读者可以通过上例的程序进行验证,设置不同的属性。
session
- 和cookie的功能上差不多一样,但是存储信息的介质不在是浏览器(前端),而是服务器上,所以相对的,用session存储的信息安全一些。
- 而且session也是有过期时间的,一般情况下默认30分钟过期,也可以设置session的过期时间。
- 还有就是session理论上是没有是没有限制,只要你的内存够大
在web.xml文件里有这个标签,可以修改session的过期时间。
<session-config>
<session-timeout>30</session-timeout>
</session-config>
对比 cookie 和 session
- 安全性上, session的安全性高,cookie的信息存在浏览器端所以不安全
- 存储的类型, session 存储的类型是 Object, cookie 只能存字符串(并且需要进行编码处理)
- 存储大小, session 理论上没有限制(但不建议存储太多内容), cookie 的限制:每个cookie不能超过4k,每个网站cookie个数也有限制的
- 失效时间, session 两次请求间隔30分钟, cookie 默认关闭浏览器失效,还可以通过 maxAge 调整的更长