非常不错的[JS]Cookie精通之路

 更新时间:2008年06月26日 08:55:56   作者:  
Cookies,有些人喜欢它们,有些人憎恨它们。但是,很少有人真正知道如何使用它们。现在你可以成为少数人中的成员-可以自傲的 Cookie 大师。

// 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。

// 下面这个语句读取了属于当前文档的所有cookies
var allcookies = document.cookie;

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

如果我们对前面分配的cookie "username" 感兴趣,可以用下面的脚本来读取它的值。

// 我们定义一个函数,用来读取特定的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的概念是一个有用的工具。

外部链接
每个 Javascript 程序员都应当有一份Javascript: David Flanagan 的The Definitive Guide。 这本书里找到cookie 类例程可以帮助你把
不止一个变量编码到单一的cookie,克服掉“每个WEB服务器20 个cookies的限制”。请点击这个链接下载该例程,
ftp://ftp.oreilly.com/pub/examples/nutshell/javascript/。

相关文章

  • Javascript中的Callback方法浅析

    Javascript中的Callback方法浅析

    这篇文章主要介绍了Javascript中的Callback方法浅析,本文讲解了什么是callback、Javscript Callback、Callback是什么、Callback实例等内容,需要的朋友可以参考下
    2015-03-03
  • JavaScript中判断函数是new还是()调用的区别说明

    JavaScript中判断函数是new还是()调用的区别说明

    具名函数的各种调用方式 在之前篇幅中已经介绍过了。这篇看看如何判断一个函数是被new调用的,还是被其它方式调用的。
    2011-04-04
  • JavaScript判断浏览器运行环境的详细方法

    JavaScript判断浏览器运行环境的详细方法

    这篇文章主要给大家介绍了关于JavaScript判断浏览器运行环境的详细方法,文中通过示例代码介绍的非常详细,对大家学习或者使用JavaScript具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • javascript encodeURI和encodeURIComponent的比较

    javascript encodeURI和encodeURIComponent的比较

    在进行SaaS前端开发的时候,大家经常会用到两个JavaScriptNative函数:encodeURI 和 encodeURIComponent。这篇文章详细解释这两个函数的用途并比较它们的不同之处
    2010-04-04
  • 微信小程序开发之你可能没有踩过的神坑总结

    微信小程序开发之你可能没有踩过的神坑总结

    最近在做一个小程序的项目,所以记录下开发过程中遇到的坑,这篇文章主要给大家介绍了关于微信小程序开发之你可能没有踩过的神坑,需要的朋友可以参考下
    2021-09-09
  • 微信小程序实现页面分享onShareAppMessage

    微信小程序实现页面分享onShareAppMessage

    这篇文章主要介绍了微信小程序实现页面分享onShareAppMessage,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 微信小程序实现翻牌抽奖动画

    微信小程序实现翻牌抽奖动画

    这篇文章主要为大家详细介绍了微信小程序实现翻牌抽奖动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • threejs太阳光与阴影效果实例代码

    threejs太阳光与阴影效果实例代码

    在Threejs中类似于我们现实世界,物体显示的颜色是由物体本身的颜色及光照的颜色相互叠加而得到的,这篇文章主要给大家介绍了关于threejs太阳光与阴影效果的相关资料,需要的朋友可以参考下
    2022-04-04
  • 浅谈js原生拖放

    浅谈js原生拖放

    下面小编就为大家带来一篇浅谈js原生拖放。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • 微信小程序npm引入vant-weapp的踩坑记录

    微信小程序npm引入vant-weapp的踩坑记录

    这篇文章主要给大家介绍了关于微信小程序npm引入vant-weapp的踩坑记录,文中通过示例代码介绍的非常详细,对大家学习或者使用微信小程序具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08

最新评论