什么是cookie
cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客 户端浏览器颁发一个cookie。客户端浏览器会把cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该cookie一同提交给服务 器。服务器检查该cookie,以此来辨认用户状态。服务器还可以根据需要修改cookie的内容。
注意:cookie功能需要浏览器的支持。如果浏览器不支持cookie或者cookie被禁用了,cookie功能就会失效。
cookie的作用
由于web程序是使用HTTP协议传输的,而HTTP协议是无状态的协议,对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答比较快.
cookie的工作原理
给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。
cookie的不可跨域名性
cookie在客户端是由浏览器来管理的。浏览器能够保证IE只会操作IE的cookie而不会操作 Google的cookie,从而保证用户的隐私安全。浏览器判断一个网站是否能操作另一个网站cookie的依据是域名。IE与Google的域名 不一样,因此IE不能操作Google的cookie。
Unicode编码:保存中文
中文与英文字符不同,中文属于Unicode字符,在内存中占4个字符,而英文属于ASCII字符,内存中只占2个字节。cookie中使用Unicode字符时需要对Unicode字符进行编码,否则会乱码。
提示:cookie中保存中文只能编码。一般使用UTF-8编码即可。不推荐使用GBK等中文编码,因为浏览器不一定支持,并且Javascript也不支持GBK编码。
base64编码:保存二进制图片
cookie不仅可以使用ASCII字符与Unicode字符,还可以使用二进制数据。例如在cookie中使用数字证书,提供安全度。使用二进制数据时也需要进行编码。
cookie的有效期
cookie的maxAge决定着cookie的有效期,单位为秒(Second)。cookie中通过getMaxAge()方法与setMaxAge(int maxAge)方法来读写maxAge属性。如果maxAge属性为正数,则表示该cookie会在maxAge秒之后自动失效。浏览器会将maxAge为正数的 cookie持久化,即写到对应的cookie文件中。无论客户关闭了浏览器还是电脑,只要还在maxAge秒之前,登录网站时该cookie仍然有效。 代码中的cookie信息将永远有效。如果maxAge为负数,则表示该cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该 cookie即失效。maxAge为负数的cookie,为临时性cookie,不会被持久化,不会被写到cookie文件中。cookie信息保存在浏 览器内存中,因此关闭浏览器该cookie就消失了。cookie默认的maxAge值为–1。如果maxAge为0,则表示删除该cookie。cookie机制没有提供删除cookie的方法,因此通过设置该cookie即时失效实现删除cookie的效果。失效的cookie会被浏览器从cookie文件或者内存中删除,
cookie的缺陷
①数量受到限制。一个浏览器能创建的 cookie 数量最多为 300 个,并且每个不能超过 4KB,每个 Web 站点能设置的cookie 总数不能超过 20 个
②HTTP协议不仅是无状态的,而且是不安全的。使用HTTP协议的数据不经过任何加密就直接在网络上传播,有被截获的可 能。使用HTTP协议传输很机密的内容是一种隐患。
③浏览器可以禁用cookie,禁用cookie后,也就无法享有cookie带来的方便。



