初次接触到Cookie的概念是在ASP.net中,当时是Session和Cookie一起进行学习的,当时为了区别二者查阅了一些相关的资料,但是始终不是很理解,这次在ITOO中开始在实践中使用对cookie又有一个新的认识。
Cookie是放在本地的txt文档,可以用来长时间的记录存储一些信息。利用cookie里的信息可以给我们一共一些方便,譬如很多网站的记录用户名密码和免登陆都是利用cookie进行的,除了这些比较常见的应用还有一个自己注意到的一个就是淘宝和京东的推送,比如在淘宝或京东上我们搜索了鼠标,下次登录淘宝或京东的时候就会大量的显示关于鼠标的信息,如果浏览了多个商品就会有有多个相关商品的展示。当然除了在内部的网站上可以推送,我们在浏览其他网站时在边角位置上也会展示这些相关的商品,这都是借助cookie完成的。这种应用可以给我们提供个性化的服务,信息的记录就意味着信息的泄露和不安全,这也是cookie最大的问题。
当然大量的使用cookie也存在一些问题,如果同一个网页出现了同名的cookie,服务器端会存在识别问题,因为我们只能获取到cookie的键和值。这一部分的相关知识自己查阅的还是比较模糊的,可能是现在没有遇到这样的问题,很多情境体会不到,知识预存一下吧。
回来说在项目中的应用吧,在ITOO中应用比较多的就是使用cookie进行信息的存在然后在不同的页面直接进行传值,相对比较简单一些,自己在应用的过程中遇到了其他的一些问题,就是cookie在存汉字时乱码的情况。
现在说说为什么乱码,文字在写入Cookie前需要进行十六进制编码,编码时又是以字节为单位的,一个汉字是由两个字节组成的,所以任何一个汉字都会被拆成两个字节分别编码;而在读Cookie时,又以字节为单位解码,因此最后每个汉字都变成了两个字节的乱码。这个问题的解决很简单,在写入cookie时使用UrlEncode,在读取时使用UrlDecode。在使用UrlEncode时不同的字符串会被编写为不同的符号。
例如在百度中搜索时在360浏览器红空格会被编写为20%
在Firefox中就是加号
小结
cookie是很早之前就接触过的知识,当时花费了一些的时间和精力去研究和理解这个东西,当时只是觉得很抽象不理解,但是在次遇到对它的认识突然就深了一些,虽然有的东西在此接触会觉得简单但是还是要去学习它,因为在不同的高度上我们所收获的东西是一样的,对它的认识也就越来越立体。