非常不错的[JS]Cookie精通之路第2/2页

 更新时间: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生成器篇

    一文了解你不知道的JavaScript生成器篇

    ES6引入了一个新的函数类型,发现它并不符合这种运行到结束的特性。这类新的函数被称为生成器。生成器的出现是我们知道原来有时代码并不会顺利的运行,可以通过暂停的方式进行异步回调,让我们摒弃了此前的认知。本文就来聊聊JavaScript中生成器的相关知识
    2022-11-11
  • javaScript深拷贝和浅拷贝的简单介绍

    javaScript深拷贝和浅拷贝的简单介绍

    深浅拷贝知识在我们的日常开发中还算是用的比较多,下面这篇文章主要给大家介绍了关于javaScript深拷贝和浅拷贝的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • 微信小程序实现倒计时功能

    微信小程序实现倒计时功能

    这篇文章主要为大家详细介绍了微信小程序实现倒计时功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • Angular组件拿不到@Input输入属性问题探究解决方法

    Angular组件拿不到@Input输入属性问题探究解决方法

    最近在工作中实现一个feature的时候,碰到一个小问题:Angular组件拿不到@Input输入属性的问题,尽管对这些问题都比较了解,但是找问题是需要一个过程的,所以还是把这个问题总结记录了下
    2023-01-01
  • JavaScript树形数据结构处理

    JavaScript树形数据结构处理

    这篇文章主要介绍了JavaScript树形数据结构处理,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • 探讨JavaScript中声明全局变量三种方式的异同

    探讨JavaScript中声明全局变量三种方式的异同

    这篇文章主要介绍了JavaScript中声明全局变量三种方式的异同。变量及变量声明是一门语言最基本的概念,初学者都会很快掌握。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • 前端报错Failed to resolve component: smile-outlined If this is a native custom解决

    前端报错Failed to resolve component: smile-outlined If thi

    这篇文章主要为大家介绍了前端报错 Failed to resolve component: smile-outlined If this is a native custom 的问题分析解决,有需要的朋友可以借鉴参考下
    2023-06-06
  • 微信小程序使用Echarts和分包的完整步骤

    微信小程序使用Echarts和分包的完整步骤

    这篇文章主要给大家介绍了关于微信小程序使用Echarts和分包的完整步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Bootstrap每天必学之前端开发框架

    Bootstrap每天必学之前端开发框架

    Bootstrap每天必学之前端开发框架,今天这篇文章就带着大家了解认识当下最流行的前端开发框架Bootstrap,bootstrap深受大家喜爱的原因到底是什么呢,我们一探究竟。
    2015-11-11
  • 如何解决js函数防抖、节流出现的问题

    如何解决js函数防抖、节流出现的问题

    这篇文章主要介绍了如何解决js函数防抖、节流出现的问题。SyntheticEvent对象是通过合并得到的。 这意味着在事件回调被调用后,SyntheticEvent 对象将被重用并且所有属性都将被取消。 因此,您无法以异步方式访问该事件。,需要的朋友可以参考下
    2019-06-06

最新评论