问题:
1:Cookie 存放在哪儿?客户端还是服务器?具体路径是什么?以什么样的方式储存?
2:Cookie 都储存了些什么内容?其格式又如何?
3:Cookie 能存放多大的内容?能有多少个Cookie?
4:Cookie 的运行原理是什么?它是如何实现C/S交互的?
5:Cookie 的安全性如何?
6:Cookie 的使用场景?
......
......
先给大家看一个试验:
代码很简单,我一方面设置 Cookie ,另一方面读取 Cookie 。
第一个循环,旨在测试 Cookie 的键值对里,值的长度。
第二个循环,旨在测试可以设置多少个 Cookie 。
第三个循环,旨在擦看 Cookie 的值。
现在解答下上面的问题:
1: Cookie 存放在客户端。以 txt 文件的形式保存。对于不同的OS和浏览器,其保存的路径可能有所不同。在此给出查看方式:【windows7,IE11和Chrome38】
IE:Intertnet选项 --- 常规 --- 设置 --- 查看文件,路径:C:\Users\Administrator\AppData\Local\Microsoft\Windows\Temporary Internet Files
chrome:更多工具 --- 清除浏览数据 --- 内容设置 --- 所有 Cookie 和网站数据。
文件名: Cookie :使用本机的用户名@域名的形式。如:Cookie:administrator@localhost/
2: Cookie 以键值对的形式,储存了在服务器指定的用于交互的数据。形式:
IE中的情况:
第一行是键名,第二行是值,第三行是域名。第四行是个状态码,下面是些创建时间和过期时间。
chrome中的情况更为简单:
至于,创建时间和过期时间,在php中可以指定,此处不再说明。
3: Cookie 能放多大内容?
根据第一个循环的测试,大概能设置4096个字符,也就是4KB,其中包含 Cookie 文件中键名,域名,状态码,时间等信息。据测试,在 Cookie 的值部分,能接受4000的字符所有的字符串。
Cookie 能有多少个?
根据第二个循环,在设置256个具有4000字符串的值的 Cookie 是允许的。很可能,系统并没有限制某个域名下 Cookie 文件的个数问题。
4: Cookie 的运行原理:
每一个 Cookie 都有一个域名【这里是一级域名,也可能是二级域名】,当我们访问此域名下的 URL 时,在HTTP的请求数据包中,则会将此域名的所有 Cookie 文件数据附加上,类似于POST数据,会被php接受到$_COOKIE数组中。
很明显,使用的协议依旧是HTTP协议。
【此处另支出,当一个域名下的COOKIE文件过多,或者文件中的值数据太大,具体多少不清楚,会造成,发送的HTTP请求需要携带大量的COOKIE数据,造成服务器无法解析。此种情况好像并不只是影响本次请求,甚至发生错误后造成浏览器无法正常使用。即使结束本次回话依旧无法使用,只能重启。。。话说,写到这里,我已经重启了5次,还好CSDN自动保存,不至于损失过大。。。】
5:安全性:
很显然,COOKIE文件保存到里浏览器,并非在服务器端,并不是绝对安全的。当然,重要的数据,我们也不会以cookie的形式保存。
6:使用场景:
举例:记住登陆,上次浏览记录,购物车等等,处理一些安全性不太高的业务逻辑时,cookie也是十分好用的。