`
阅读更多

 

请记住,cookie就是文档的一个字符串属性。要保存cookie,只要建立一个字符串,格式是name=<value>(名称=值),然 后把文档的 document.cookie 设置成与它相等即可。比如,假设想保存表单接收到的用户名,那么代码看起来就象这样:
Java代码
document.cookie = "username" + escape(form.username.value);

在这里,使用 escape() 函数非常重要,因为cookie值里可能包含分号、逗号或者空格。这就是说,在读取cookie值时,必须使用对应的unescape()函数给值解码。
我们当然还得介绍cookie的四个属性。这些属性用下面的格式加到字符串值后面:
Java代码
    name=<value>[; expires=<date>][; domain=<domain>][; path=<path>][; secure]
    
    名称=<值>[; expires=<日期>][; domain=<域>][; path=<路径>][; 安全]

    <value>, <date>, <domain> 和 <path> 应当用对应的值替换。<date> 应当使用GMT格式,可以使用Javascript脚本语言的日期类Date的.toGMTString() 方法得到这一GMT格式的日期值。方括号代表这项是可选的。比如在 [; secure]两边的方括号代表要想把cookie设置成安全的,就需要把"; secure" 加到cookie字符串值的后面。如果"; secure" 没有加到cookie字符串后面,那么这个cookie就是不安全的。不要把尖括号<> 和方括号[] 加到cookie里(除非它们是某些值的内容)。设置属性时,不限属性,可以用任何顺序设置。

    下面是一个例子,在这个例子里,cookie "username" 被设置成在15分钟之后过期,可以被服务器上的所有目录访问,可以被"mydomain.com"域里的所有服务器访问,安全状态为安全。
    Java代码
    // Date() 的构造器设置以毫秒为单位
    // .getTime() 方法返回时间,单位为毫秒
    // 所以要设置15分钟到期,要用60000毫秒乘15分钟
    var expiration = new Date((new Date()).getTime() + 15 * 60000);
    document.cookie = "username=" + escape(form.username.value)+ "; expires ="
    + expiration.toGMTString() + "; path=" + "/" + "; _
    domain=" + "mydomain.com" + "; secure";
    

    读取cookies值有点象个小把戏,因为你一次就得到了属于当前文档的所有cookies。
    Java代码
      // 下面这个语句读取了属于当前文档的所有cookies
      var allcookies = document.cookie;

      现在,我们得解析allcookies变量里的不同cookies,找到感兴趣的指定cookie。这个工作很简单,因为我们可以利用Javascript语言提供的扩展字符串支持。

      如果我们对前面分配的cookie "username" 感兴趣,可以用下面的脚本来读取它的值。
      Java代码
      // 我们定义一个函数,用来读取特定的cookie值。
      function getCookie(cookie_name)
      {
      var allcookies = document.cookie;
      var cookie_pos = allcookies.indexOf(cookie_name);
      
      // 如果找到了索引,就代表cookie存在,
      // 反之,就说明不存在。
      if (cookie_pos != -1)
      {
      // 把cookie_pos放在值的开始,只要给值加1即可。
      cookie_pos += cookie_name.length + 1;
      var cookie_end = allcookies.indexOf(";", cookie_pos);
      
      if (cookie_end == -1)
      {
      cookie_end = allcookies.length;
      }
      
      var value = unescape(allcookies.substring(cookie_pos, cookie_end));
      }
      
      return value;
      }
      
      // 调用函数
      var cookie_val = getCookie("username");
      

      上面例程里的 cookie_val 变量可以用来生成动态内容,或者发送给服务器端CGI脚本进行处理。现在你知道了使用Javascript脚本操纵cookies的基本方法。但是,如果 你跟我一样,那么我们要做的第一件事,就是建立一些接口函数,把cookies处理上的麻烦隐藏起来。不过,在你开始编程之前,稍候片刻。这些工作,早就 有人替你做好了。你要做的,只是到哪去找这些接口函数而已。

      比如,在David Flangan的Javascript: The Definitive Guide 3rd Ed.这本书里,可以找到很好的cookie应用类。你也可以在Oreilly的WEB站点上找到这本书里的例子。本文最后的链接列表里,有一些访问这些 cookie示例的直接链接。


      Cookies 怪兽

      因为某些原因Cookies 的名声很不好。许多人利用cookies做一些卑鄙的事情,比如流量分析、点击跟踪。Cookies 也不是非常安全,特别是没有secure属性的cookies。不过,即使你用了安全的cookies,如果你和别人共用计算机,比如在网吧,那么别人就 可以窥探计算机硬盘上未加密保存的cookie文件,也就有可能窃取你的敏感信息。所以,如果你是一个WEB开发人员,那么你要认真考虑这些问题。不要滥 用cookies。不要把用户可能认为是敏感的数据保存在cookies里。如果把用户的社会保险号、信用卡号等保存在cookie里,等于把这些敏感信 息放在窗户纸下,无异于把用户投到极大危险之中。一个好的原则是,如果你不想陌生人了解你的这些信息,那就不要把它们保存在cookies里。

      另外,cookies还有一些实际的限制。Cookies保留在计算机上,不跟着用户走。如果用户想换计算机,那么新计算机无法得到原来的 cookie。甚至用户在同一台计算机上使用不同浏览器,也得不到原来的cookie:Netscape 不能读取Internet Explorer 的cookies。

      还有,用户也不愿意接受cookies。所以不要以为所有的浏览器都能接受你发出的cookies。如果浏览器不接受cookies,你要保证自己的WEB站点不致因此而崩溃或中断。

      另外WEB 浏览器能保留的cookies不一定能超过300个。也没有标准规定浏览器什么时候、怎么样作废cookies。所以达到限制时,浏览器能够有效地随机删 除cookies。浏览器保留的来自一个WEB服务器上的cookies,不超过20个,每个cookie的数据(包括名称和值),不超过4K字节。(不 过,本文里的cookie尺寸没问题,它只占了12 K字节,保存在3个3 cookies里。)

      简而言之,注意保持cookie简单。不要依赖cookies的存在,不要在每个cookie里保存太多信息。不要保存太多的cookes。但是,抛除这些限制,在技巧高超的WEB管理员手里,cookie的概念是一个有用的工具。
      分享到:
      评论

      相关推荐

        浏览器中使用JS操作Cookie详解

        并且在Cookie详解这篇文章中,介绍了如何在服务器端和使用JavaScript创建Cookie,并设置属性。 ​我们知道,Cookie是存储在客户端的,并且现在前后端分离慢慢变得流行起来,因此如何在浏览器上可以使用方便快捷的...

        JavaScript操作Cookie详解

        主要介绍了JavaScript操作Cookie详解,本文讲解了什么是Cookie、Cookie基础知识、Cookie常见问题、cookie 有两种清除方式、Cookie基础用法、Cookie高级用法等内容,需要的朋友可以参考下

        【JavaScript源代码】详解操作cookie的原生方法cookieStore.docx

        详解操作cookie的原生方法cookieStore  目录 1. 平时如何操作 cookie2. 新方式 cookieStore2.1 基本方法2.2 设置 cookie2.3 获取 cookie2.4 获取所有的 cookie2.5 删除 cookie2.6 监听 cookie 的变化3. 总结 1. ...

        javascript针对cookie的基本操作实例详解.docx

        javascript针对cookie的基本操作实例详解.docx

        js中的cookie的读写操作示例详解.docx

        js中的cookie的读写操作示例详解.docx

        JavaScript cookie详解及简单实例应用

        主要介绍了JavaScript cookie详解及简单实例应用的相关资料,这里对js cookie 的介绍及基本属性和简单应用做了详解,需要的朋友可以参考下

        javascript操作Cookie(设置、读取、删除)方法详解

        主要详细向大家介绍了javascript操作Cookie的方法,包括设置、读取、删除操作,十分的细致全面,附上示例,是篇非常不错的文章,这里推荐给大家。

        javascript与cookie 的问题详解

        原来用 js 读写 cookie 一直没有注意一个问题:相同的 key 值,不同的 domain (locahost.dev.xxx.com, dev.xxx.com, xxx.com 等) 是可以同时存在于Cookie 里的 , [removed] 能把这几个 cookie 都读出来,但是没有 ...

        JavaScript之cookie技术详解

        运用JS设置cookie、读取cookie、删除cookie JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的。 而cookie是运行在客户端的,所以可以用JS来设置cookie. 假设有这样...

        Javascript 对cookie操作详解及实例

        js 操作 cookie 的方法 cookie cookie,有时候也用其复数形式Cookies,指某些网站为了辨别用户身份,进行session跟踪而储存在用户本地终端上的数据(经常通过加密)。定义于RFC2109和2965都已废弃,最新取代的规范是...

        JavaScript详解(第2版)

        《Javascript详解(第2版)》从Javascript的编程结构开始,循序渐进地讲述了Javascript及相关的CSS、W3CDOM、cookie、正则表达式和匹配模式,以及功能强大的Ajax。书中采用了大量课堂实践示例,附以...

        PHP与JavaScript针对Cookie的读写、交互操作方法详解

        主要介绍了PHP与JavaScript针对Cookie的读写、交互操作方法,结合实例形式分析了php与javascript设置cookie、php读取php及js设置的cookie、js读取php及js设置的cookie等相关操作技巧,需要的朋友可以参考下

        JS中对Cookie的操作详解

        cookie设置 参数说明: name cookie 名称,key值 value 可选,cookie 值 expire 可选,过期时间,时间戳格式 path 可选,服务器端有效路径,/ 表示整个域名有效,默认为当前设置 cookie 时页面的路径 domain 可...

        javascript针对cookie的基本操作实例详解

        本文实例讲述了javascript针对cookie的基本操作。分享给大家供大家参考,具体如下: js被C#、JAVA等开发者视为声名狼藉的附属编程语言是有道理的,比如说,对cookie的操作。js就没有一套类似C#的现成处理方案,而...

        jquery.cookie.js用法实例详解

        本文实例讲述了jquery.cookie.js...jquery.cookie.js 提供了jquery中非常简单的操作cookie的方法。 $.cookie('the_cookie'); // 获得cookie $.cookie('the_cookie', 'the_value'); // 设置cookie $.cookie('the_cookie

      Global site tag (gtag.js) - Google Analytics