一cookie是什么?
1.Cookie:是服务器端传给客户端的体积很小的纯文本文件
作用:简单的理解为,用户去商场买东西,商场发给用户的卡片。
下次用户去商场带上这张卡片,卡片上有用户的信息
(购物记录、积分等)。Cookie就类似于这张卡片的作用。
最根本的用途是Cookie 能够帮助 Web站点保存有关访问者的信息,也就是在不同的网页之间保持会话状态的保持能力,因为HTTP是无状态的。
Cookie 的作用就类似于名片,它提供了相关的标识信息,可以帮助应用程序确定如何继续执行。
2.1 Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续。
2.2 另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。
2.3 高级应用,某家航空公司站点查阅航班时刻表,该网站可能就创建了包含你旅行计划的Cookies,在你下次访问时,网站根据你的情况对显示的内容进行调整,将你所感兴趣的内容放在前列。
三 Cookie的产生与机制
1.Cookie的生成,示例(java代码)
Cookie cookie = new Cookie(“key”,”value”);
cookie.setMaxAge(60); //设置cookie的生存期60秒
cookie.setPath(“/test”);//设置cookie的路径,不设置为当前路径 // 对于servlet来说为request.getContextPath()+web.xml里配置的servlet的url-pattern路径部分
response.addCookie(cookie);//将cookie随着响应返回给客户端
2.Cookie是如何把信息带给服务端的?
浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的HTTP请求头上发送给服务器。
3.服务器端获得cookie的方法:
Cookies[] cookies = request.getCookies();//获得所有的cookie
四 Cookie的属性
HttpCookie类代表cookie。当创建或读取一个cookie时,可以使用该类的下面这些属性:
Domain——用于设置关联到cookie的域名,默认值是当前域名;
Expires——用于通过给定一个过期时间创建一个持久化cookie;
HasKeys——用于指定该cookie是否是一个多值cookie(见本章稍后的3.1.6节);
HttpOnly——用于避免cookie被JavaScript访问;
Name——用户指定cookie的名称;
Path——用于指定关联到cookie的路径。默认值为/;
Secure——用于指定cookie需要通过安全Socket层(SSL)连接传递;
Value——允许读/写cookie的值;
Values——当使用多值cookie时,用于读/写特定的值(见本章稍后的3.1.6节)。
五 Cookie属性说明
说明:Domain属性对于组织子域名时会非常有用。如果需要设置cookie可以被Sales.MyCompany.com,Managers.MyCompany.com和Support.MyCompany.com访问,则需要设置 Domain属性值为.MyCompany.com(注意开头的部分),而不能使用该属性关联cookie到一个完全不同的域名。
HttpOnly属性用户设置一个cookie是否可以通过JavaScript访问。该属性只对IE6(SP1)级以上版本有效。引入该属性是为了防止跨站点脚本攻击。
Path属性用于限定cookie到一个特定的路径。例如,如果在相同的域名部署多个应用程序,而不希望应用程序共享相同的cookie,则需要设置Path属性避免一个应用程序读取另一个应用程序的cookie。
六 cookie的生命周期和存储
1.Cookie主要包括:名字,值,过期时间,路径和域
路径与域一起构成cookie的作用范围
2.Cookie的生命周期:
根据生命周期分为两种类型cookie:会话cookie和持久cookie
会话cookie:如果不设置过期时间,表示这个cookie的生命期为浏览器的会话期间,关闭浏览器窗口,cookie就消失了。会话cookie一般保存在内存里。
持久cookie:设置了过期时间,浏览器会把cookie保存在硬盘上。存储在硬盘上的cookie会在不同的浏览器进程间共享。
保存在内存里的cookie,不同的浏览器有不同的处理方式
3.Cookie在硬盘的存储位置:
Winxp :
Ie中 Internet选项->常规->当前位置中 以cookie:开头的文件
七 Cookie的删除与使用
1.要删除一个存在的cookie,必须设置其过期时间为一个过去的时间。
2.HttpCookie.HasKey属性判断一个cookie是一个普通cookie还是一个多值cookie。
八 不同浏览器的cookie的限制
1.InternetExplorer8增加cookie限制为每个域名50个
IE7似乎也允许每个域名50个cookie
2.Firefox每个域名cookie限制为50个。
3.Opera每个域名cookie限制为30个。
4.还有些浏览器会对来自所有站点的 Cookie总数作出限制,这个限制通常为 300 个。
InternetExplorer和Opera:
当Cookie已达到限额,自动踢除最老的Cookie,以使给最新的Cookie一些空间
Firefox很独特:虽然最后的设置的Cookie始终保留,但似乎随机决定哪些cookie被保留。似乎没有任何计划(建议:在Firefox中不要超过Cookie限制)
十 Cookie的安全性与不安全性
10.1 cookie是安全的
使用IE浏览器请求页面并创建的cookie,不存在于Firefox或Opera浏览器中。