浅谈Cookie

什么是cookie

Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于 RFC2109 和 2965 中的都已废弃,最新取代的规范是 RFC6265 。(可以叫做浏览器缓存)。

Cookie特点:

Cookie内存大小受限:
在这里插入图片描述
Cookie具有生命周期:
Cookie可以保持登录信息到用户下次与服务器的会话,换句话说,下次访问同一网站时,用户会发现不必输入用户名和密码就已经登录了(当然,不排除用户手工删除Cookie)。而还有一些Cookie在用户退出会话的时候就被删除了,这样可以有效保护个人隐私。

Cookie在生成时就会被指定一个Expire值,这就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。有些页面将Cookie的生存周期设置为“0”或负值,这样在关闭浏览器时,就马上清除Cookie,不会记录用户信息,更加安全。

Cookie满足同源策略
虽然网站images.google.com与网站www.google.com同属于Google,但是域名不一样,二者同样不能互相操作彼此的Cookie。

问题来了 举个例子:

访问 : 删除线格式 zhidao.baidu.com 再访问wenku.baidu.com还需要重新登陆百度账号吗?
解决办法: 设置document.domain = ‘baidu.com’;
让页面属于这个基础域名下(那么此页面和任何二级域名为baidu.com的)

Cookie的使用:

1. 如何创建一个cookie

Cookie c = new Cookie(Stringname,Stringvalue);response.addCookie©;
默认情况下,cookie保存在浏览器内存中

2. cookie的查询

Cookie[] cookie = request.getCookies();
注意:该方法有可能返回nullString cookie.getName():查找cookie的名字String cookie.getValue():查找cookie的值

3. cookie的生存时间

cookie.setMaxAge(int seconds):cookie的保存时间
seconds>0:浏览器会将cookie保存在硬盘上,超过指定时间会删除该cookie
seconds<0:缺省值,只将cookie保存在内存中,只要浏览器不关闭,cookie就一致保存,浏览器一旦关闭,cookie就会被清空。
seconds=0:立即删除cookie,如要删除一个叫userID的cookie,那么可以这么做:Cookiec = new Cookie(“userID”,"");c.setMaxAge(0);response.addCookie©;

4. cookie的限制
a、cookie可以被用户禁止
b、cookie不完全,敏感数据,比如密码、账号等需要加密。
c、cookie的大小有限制,大约为4K左右
d、cookie的个数也有限制,大约是300个左右
e、每个站点最多保存20个cookief、cookie只能够保存字符串。

你可能感兴趣的:(浅谈Cookie)