什么是Cookie
1:会话?
用户打开一个游览器,点击了很多链接,访问了多个web资源,然后关闭游览器,这个过程叫做一次会话。
一个网站如何证明你访问过?
服务端给客户端一个Cookie,每次客户端访问服务器的时候携带这个Cookie。这样服务端就能识别了。
2:Cookie是一种客户端技术(通过请求和响应实现)
(1)从请求中获取Cookie信息
(2)服务器响应给客户端Cookie
Cookie[] cookies = request.getCookies();//获取客户端发过来的Cookie for (int i = 0; i < cookies.length; i++) { cookies[i].getName();//获取Cookie中的key cookies[i].getValue();//获取Cookie中的value } Cookie cookie = new Cookie("name", "xst");//新建一个cookie对象 cookie.setMaxAge(24*60*60);//设置cookie的有效期 response.addCookie(cookie);//响应给客户端cookie
(3)使用Cookie的注意事项
一个Cookie只能保存一个信息
一个web站点可以给游览器发送多个cookie,最多存放20个cookie
cookie有大小限制4kb
删除Cookie:(1)关闭游览器,Cookie即被删除。(2)设置Cookie的有效时期为0,则Cookie立刻过期。则表示删除了。
3:Cookie的生命周期
Cookie在生成时就会生成一个maxAge值,这就是Cookie的生命周期,在这个周期内Cookie有效,超过周期Cookie就会被清,在有些游览器或者页面中会将Cookie的生命周期设置为0或者负值,
这样在关闭游览器时,就会清除Cookie,不会记录用户信息。
a、如果maxAge属性为正数,则表示该Cookie会在maxAge秒之后自动失效。浏览器会将maxAge为正数的Cookie持久化,即写到对应的Cookie文件中。无论客户关闭了浏览器还是电脑,只要还在maxAge秒之前,登录网站时该Cookie仍然有效。
b、如果maxAge为负数,则表示该Cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该Cookie即失效。maxAge为负数的Cookie,为临时性Cookie,不会被持久化,不会被写到Cookie文件中。Cookie信息保存在浏览器内存中,因此关闭浏览器该Cookie就消失了。Cookie默认的maxAge值为–1。
c、如果maxAge为0,则表示删除该Cookie。Cookie机制没有提供删除Cookie的方法,因此通过设置该Cookie即时失效实现删除Cookie的效果。失效的Cookie会被浏览器从Cookie文件或者内存中删除:
4:Cookie的缺陷?
a、数量受到限制。一个浏览器能创建的 Cookie 数量最多为 300 个,并且每个不能超过 4KB,每个 Web 站点能设置的 Cookie 总数不能超过 20 个
b、安全性无法得到保障。通常跨站点脚本攻击往往利用网站漏洞在网站页面中植入脚本代码或网站页面引用第三方法脚本代码,均存在跨站点脚本攻击的可能。
在受到跨站点脚本攻击时,脚本指令将会读取当前站点的所有 Cookie 内容(已不存在 Cookie 作用域限制),然后通过某种方式将 Cookie 内容提交到指定的服务器(如:AJAX)。一旦 Cookie 落入攻击者手中,它将会重现其价值。
c、浏览器可以禁用Cookie,禁用Cookie后,也就无法享有Cookie带来的方便。