现在的位置: 首页 > 综合 > 正文

cookies你应该知道的

2014年02月28日 ⁄ 综合 ⁄ 共 4137字 ⁄ 字号 评论关闭

Cookie是我们浏览网络时随时伴随着我们的东西,可以经常看到很多安全软件在帮你清理系统时都会提示你要清除cookie,那么你对cookie又了解多少呢?今天就主要对相关知识作了整理学习。

 

1、什么是cookie?有什么作用?

Cookie是数据包,不是程序,可以简单的理解为网页的一个记忆功能,网站服务器把少量的数据存储在客户端的一种技术,主要是为了方面用户。详细点说就是是你浏览某网站时,由Web服 务器置于你硬盘上的一个非常小的文本文件,记录着你的一些个人信息,例如:用户ID、密码、浏览过的网页、停留的时间等信息。当用户再次来到该网站时,网 站通过读取Cookie,得知相关信息,就可以做出相应的动作,如在页面显示欢迎你的标语,或者让用户不用输入ID、密码就直接登录等等。

举例来说cookies到底有哪些优点呢?

1) 保存用户登录状态:例如将用户id存储于一个cookie内,这样当用户下次访问该页时就不需要重新登录了,现在很多论坛和社区都提供这样的功能。cookie还可以设置过期时间,当超过时间期限后,cookie就会自动消失。因此,系统往往可以提示用户保持登录状态的时间:常见选项有一个月、三个月、一年等。

2)  跟踪用户行为:例如一个天气预报网站,能够根据用户选择的地区显示当地的天气情况如果每次都需要选择所在地是烦琐的,当利用了cookie后就会显得很人性化了,系统能够记住上一次访问的地区,当下次再打开该页面时,它就会自动显示上次用户所在地区的天气情况。因为一切都是在后台完成,所以这样的页面就像为某个用户所定制的一样,使用起来非常方便。

3)  定制页面:如果网站提供了换肤或更换布局的功能,那么可以使用cookie来记录用户的选项,例如:背景色、分辨率等。当用户下次访问时,仍然可以保存上一次访问的界面风格。

4)  创建购物车:正如在前面的例子中使用cookie来记录用户需要购买的商品一样,在结账的时候可以统一提交。例如淘宝网就使用cookie记录了用户曾经浏览过的商品,方便随时进行比较。

从 前面的了解可以知道,网站利用cookie可能存在侵犯用户隐私的问题,但由于大多用户对此了解不多,而且这种对用户个人信息的利用多数作为统计数据之 用,不一定造成用户的直接损失,因此现在对于cookies与用户隐私权的问题并没有相关法律约束,很多网站仍然在利用cookie跟踪用户行为,有些程 序要求用户必须开启cookie才能正常应用。

 

2、为什么会有cookie,cookie是如何实现的?

 http 协议的是一个无状态的连接协议,即客户端的请求和服务端的响应是相对独立的。但是客户端与服务器进行动态交互的Web应用程序出现之后,HTTP无状态的 特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。于是,两种用于保持HTTP连接 状态的技术就应运而生了,一个是Cookie,而另一个则是Session。网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求缚上这些cookies。

 

3、Cookies文件保存在哪里,如何设置cookies?

不 同系统下,cookies存储的位置有不同,Windows xp下,cookies保存在C:/Documents and Settings /Cookies,windows vista下则记录在C:/Users/用户名/Cookies/;保存格式是以user@domain格式命名 的,user是本地用户名,domain是所访问的网站的域名我们可对Cookie进行适当设置:打开“工具/Internet选项”中的“隐私”选项卡(注意该设置只在IE6.0中存在,其他版本IE可以单击“工具 /Internet选项” “安全”标签中的“自定义级别”按钮,进行简单调整),调整Cookie的安全级别。通常情况,可以调整到“中高”或者“高” 的位置。多数的论坛站点需要使用Cookie信息,如果你从来不去这些地方,可以将安全级调到“阻止所有Cookies”;如果只是为了禁止个别网站的 Cookie,可以单击“编辑”按钮,将要屏蔽的网站添加到列表中。在“高级”按钮选项中,你可以对第一方Cookie和第三方的Cookie进行设置, 第一方Cookie是你正在浏览的网站的Cookie,第三方Cookie是非正在浏览的网站发给你的Cookie,通常要对第三方Cookie选择“拒 绝”。你如果需要保存Cookie,可以使用IE的“导入导出”功能,打开“文件/导入导出”,按提示操作即可。 

 

4、如何读取和写入cookies?

了解到客户端脚本javascript和vbscript也是可以读取和写入cookies,所以下面将通过使用javascript来学习。

这里我将以一个例子来实现产生cookie和读取cookie。

1) 写入cookie

Cookie存储在document对象的cookie属性中,这个属性是一个字符串,当页面载入时由浏览器自动生成。在cookie属性中,信息由分号隔开,每一个cookie都包含了一对由等号分开的名字和值。

这里记入的cookies为:测试数据及有效时间为1分钟。

function Set(){

    var Then = new Date()        

    Then.setTime(Then.getTime() + 60*1000 )   //60秒

    document.cookie = "Cookie1=测试数据;expires="+ Then.toGMTString() 

}

 2)读取cookie

除 非能再次访问cookie,否则没必要写入cookie。浏览器会自动用在当前域范围内有效的cookie来填充document.cookie,所以, 根本没有机会读取那些不该被读取的cookie值。不过,仍然可以读取在其他时间设置的cookie值,也可以在同一个网站的其他位置读取cookie 值。

从document.cookie中读取数据没有特别的地方,就是需要解析字符串,并取出所需要的值。不过只要理解了cookie字符串的语法,就可以很容易地将这个过程分解为一系列的函数调用。

function Get(){  

    var cookieString = new String(document.cookie)

    var cookieHeader = "Cookie1="

10     var beginPosition = cookieString.indexOf(cookieHeader)

11     if (beginPosition != -1){

12         document.all.Textbox.value = cookieString.substring(beginPosition 

13             + cookieHeader.length) 

14         }

15     else

16         document.all.Textbox.value = "Cookie 未找到!"   

17 }

一下是整个实现代码,保存为html,运行你即可发现你的cookies文件夹生成了一条coookie,一分钟之内如果读取将会读取出先前写入的cookie内容。

18 <HTML>

19 <BODY>

20 写入与读取 cookies...<BR>

21 <INPUT TYPE = BUTTON Value = "写入cookie" onClick = "Set()">

22 <INPUT TYPE = BUTTON Value = "读取cookie" onClick = "Get()"><BR>

23 <INPUT TYPE = TEXT NAME = Textbox>

24 </BODY>

25 <SCRIPT LANGUAGE="JavaScript">

26 function Set(){

27     var Then = new Date()        

28     Then.setTime(Then.getTime() + 60*1000 )   //60秒

29     document.cookie = "Cookie1=测试数据;expires="+ Then.toGMTString() 

30 }

31 function Get(){  

32     var cookieString = new String(document.cookie)

33     var cookieHeader = "Cookie1="

34     var beginPosition = cookieString.indexOf(cookieHeader)

35     if (beginPosition != -1){

36         document.all.Textbox.value = cookieString.substring(beginPosition+ cookieHeader.length) 

37         }

38     else

39         document.all.Textbox.value = "Cookie 未找到!"   

40 }

41 </SCRIPT> 

42 </HTML>

43 

44 

其实要在服务端和客户端灵活的运用好cookie机制还是不那么容易的事情,首先就涉及到服务端的sesssion机制 ,关于session机制我还不了解,下一篇将要学习这方面的知识。


~~~~~~~~~~~~believe yourself ,nothing is impossible, write in 01.07.2009 by vivilorne~~~~~~~~~~~~~

抱歉!评论已关闭.