`
lgl669
  • 浏览: 173395 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

cookie 好文章

阅读更多

Cookies,有些人喜欢它们,有些人憎恨它们。但是,很少有人真正知道如何使用它们。现在你可以成为少数人中的成员-可以自傲的Cookie 大师。-->

如果你象作者一样记性不好,那么你可能根本记不住人们的名字。我遇到人时,多半只是点点头,问句“吃了嘛!”,而且期望问候到此为止。如果还需要表示些什 么,那么我就得求助于一些狡猾的技巧,好让我能想对方是谁。比如胡扯起一些和对方有关的人,不管他们之间关系多远,只要能避免不记得对方名字的尴尬就 好: “你隔壁邻居的侄子的可爱小狗迈菲斯特怎么样?”通过这个方法,我希望能让对方感到,我确实很重视他(她),甚至还记得这些琐事,虽然实际上连名字 都忘记了。但是,不是我不重视,而是我的记忆力实在是糟糕,而且要记住的名字又实在太多。如果我能给每个人设置cookies,那么我就不会再犯这种记忆 力问题了。

在这篇文章里,我们要学习:

1. 什么是 Cookies?
2. Cookie 的构成
3. 操纵 Cookies
4. Cookie 怪兽

什么是Cookies?

你会问,什么是cookies呢? cookie 是浏览器保存在用户计算机上的少量数据。它与特定的WEB页或WEB站点关联起来,自动地在WEB浏览器和WEB服务器 之间传递。

比如,如果你运行的是Windows操作系统,使用Internet Explorer上网,那么你会发现在你的“Windows”目录下面有一个子目 录,叫做“Temporary Internet Files”。如果你有空看看这个目录,就会发现里面有一些文件,文件名称看起来就象电子邮件地址。比 如在我机器上的这个目录里,就有 “jim@support.microsoft.com”这样的文件。这是一个cookie 文件,这个文件从哪来呢? 猜一猜,它来自微软的支持站点。顺便说一句,这不是我的电子邮件地址,特此澄清。

对于管理细小的、不重要的、不想保存在中央数据库里的细节信息,Cookies 是个很不错的方案。(这不是说大家的名字不重要。)比如,目前网站上不断 增长的自定义服务,可以为每个用户定制他们要看的内容。如果你设计的就是这样一个站点,那么你怎么来管理这样的信息:一个用户喜欢绿色的菜单条,而另一个 喜欢红色的。确实是个累人的问题。不过,这样的信息,可以很安全地记录到cookie,并保存在用户的计算机上,而你自己的数据库空间可以留给更长久更有 意义的数据。

FYI: Cookies 对于安全用途,通常很有用。我不想在此就这一问题过于深入,只是提供一个示例,可以看到如何使用在一段时间之后过期的cookies来保证站点安全:

1. 使用用户名和口令,通过 SSL 登录。
2. 在服务器 的数据库里检查用户名和口令。如果登录成功,建立一个当前时间标签的消息摘要 (比如 MD5) ,并把它保存在cookie和服务器 数据库里。把用户的登录时间保存在服务器 数据库里面的用户记录里。
3. 在进行每个安全事务时(用户处于登录状态的任何事务),把cookie的消息摘要和保存在服务器 数据库里的摘要进行比较,如果比较失败,就把用户引导到登录界面。
4. 如果第3步检查通过,那么检查当前时间和登录时间之音经过的时间是否超过允许的时间长度。如果用户已经超时,那么就把用户引到登录界面。
5. 如果第3步和第4步都通过了,那么把登录时间重新设置成当前时间,允许事务发生。那些需要你登录的安全站点,可能多数使用的都是和这里介绍的类似的方法。
Cookie的构成

Cookies最初设计时,是为了CGI编程。但是,我们也可以使用Javascript脚本来操纵cookies。在本文里,我们将演示如何使用 Javascript脚本来操纵cookies。(如果有需求,我可能会在以后的文章里介绍如何使用Perl进行cookie管理。但是如果实在等不得, 那么我现在就教你一手:仔细看看CGI.pm。在这个CGI包里有一个cookie()函数,可以用它建立cookie。但是,还是让我们先来介绍 cookies的本质。

在Javascript脚本里,一个cookie 实际就是一个字符串属性。当你读取cookie的值时,就得到一个字符串,里面当前WEB页使用的所有 cookies的名称和值。每个cookie除了name名称和value值这两个属性以外,还有四个属性。这些属性是: expires过期时 间、 path路径、 domain域、以及 secure安全。

Expires – 过期时间。指定cookie的生命期。具体是值是过期日期。如果想让cookie的存在期限超过当前浏览器会话时间,就必须使用这个属性。当过了到期日期时,浏览器就可以删除cookie文件,没有任何影响。

Path – 路径。指定与cookie关联的WEB页。值可以是一个目录,或者是一个路径。如果http://www.jzxue.com/html /java/建立了一个cookie,那么在http://www.jzxue.com/html/java/目录里的所有页面,以及该目录下面任何子目 录里的页面都可以访问这个cookie。这就是说,在http://www.jzxue.com/html/java/stories /articles 里的任何页面都可以访问http://www.jzxue.com/html/java/index.html建立的cookie。 但是,如果http://www.jzxue.com/html/asp/ 需要访问http://www.jzxue.com/html/java /index.html设置的cookes,该怎么办?这时,我们要把cookies 的path属性设置成“/”。在指定路径的时候,凡是来自同一服务器 ,URL 里有相同路径的所有WEB页面都可以共享cookies。现在看另一个例子:如果想让 http://www.jzxue.com/devhead /filters/ 和http://www.jzxue.com/devhead/stories/共享cookies,就要把path设成“ /devhead”。

Domain – 域。指定关联的WEB服务器 或域。值是域名 , 比如jzxue.com。这是对path路径属性的一个延伸。如果我们想让 catalog.mycompany.com 能够访问 shoppingcart.mycompany.com设置的cookies,该怎么办? 我们可以把domain属性设置成 “mycompany.com”,并把path属性设置成“/”。FYI:不能把cookies域属性设置成与设置它的服务器 的所在域不同的值。

Secure – 安全。指定cookie的值通过网络如何在用户和WEB服务器 之间传递。这个属性的值或者是“secure”,或者为空。缺省情况下,该属性为空,也就是使用不安全的HTTP连接传递数据。如果一个 cookie 标记为secure,那么,它与WEB服务器 之间就通过HTTPS或者其它安全协议传递数据。不过,设置了secure属性不代表其他人不能看到你机器本地保存的cookie。换句话说,把cookie设置为secure,只保证cookie与WEB服务器 之间的数据传输过程加密,而保存在本地的cookie文件并不加密。如果想让本地cookie也加密,得自己加密数据。




操纵Cookies

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

document.cookie = "username" + escape(form.username.value);

在这里,使用 escape() 函数非常重要,因为cookie值里可能包含分号、逗号或者空格。这就是说,在读取cookie值时,必须使用对应的unescape()函数给值解码。

分享到:
评论

相关推荐

    cookie

    这篇博客文章深入探讨了Cookie的工作原理及其在实际应用中的使用。 首先,Cookie是由服务器端通过HTTP响应头Set-Cookie字段创建的。当用户访问一个网站时,服务器可以发送一个或多个Cookie到用户的浏览器,这些...

    express入门(10)- cookie

    本篇文章将详细介绍如何在Express框架中使用Cookie。 #### 一、Cookie简介 Cookie是由服务器发送到客户端的一种小型文本文件,它通常用于跟踪用户的会话状态。当用户访问网站时,服务器会通过HTTP响应头Set-Cookie...

    cookie机制实现登陆、退出

    本篇文章将详细探讨Cookie如何实现登录和退出功能,以及相关的核心知识点。 首先,让我们了解Cookie的基本原理。Cookie是由服务器端发送到用户浏览器并存储的一小块数据。每当用户访问同一服务器的网页时,这些...

    cookie编程

    这篇博客文章“Cookie编程”可能详细介绍了如何在实际项目中使用Cookie,以及其背后的原理和技术细节。 Cookie最初由Netscape在HTTP协议中引入,作为服务器与浏览器之间的一种持久化通信机制。它们主要用来存储用户...

    cookie编辑器

    以“菲菲博客 分享”为例,假设博主菲菲使用Cookie编辑器,她可能想通过编辑Cookie来测试新的评论功能,或者清除可能影响新文章发布的旧版Cookie。此外,她也可以分享自己的使用经验,让更多人了解如何利用Cookie...

    C#获取WebBrowser中的cookie和userAgent

    本篇文章将详细探讨如何利用C#获取WebBrowser控件中的cookie和userAgent信息。 一、WebBrowser控件简介 WebBrowser控件是.NET Framework提供的一个组件,它基于Internet Explorer引擎,可以在桌面应用中模拟浏览器...

    查询IE Cookie C++

    本篇文章将深入探讨如何使用C++编程语言来查询Internet Explorer(IE)的Cookie。Cookie是Web服务器存储在用户计算机上的小型文本文件,用于记录用户的信息,如登录状态、浏览历史等。 首先,我们需要了解Windows ...

    cookie实现倒计时

    在本篇文章中,我们将深入探讨如何使用Cookie技术来实现网页上的倒计时功能,并通过JavaScript代码来具体实施这一过程。倒计时功能广泛应用于各种场景之中,如网站活动倒计时、在线考试计时等,它能够有效地提醒用户...

    对session和cookie的一些理解

    在“源码”和“工具”标签的提示下,我们可以推断文章可能涉及了Cookie和Session的实现细节,或许还涵盖了如何在实际项目中使用它们,或者分析了一些常见的库和框架如何处理Session和Cookie。例如,Spring框架提供了...

    CSDNcookie资料全集

    【描述】提到的“我把csdn上的cookie的资料都下来看了一遍,整理好了”,意味着这个压缩包可能包含了多篇博客文章、讨论帖、代码示例,甚至可能有相关的问答和教程,所有这些内容都是关于如何理解和运用Cookie的。...

    Android使用AsyncHttpClient读写Cookie

    本篇文章将详细探讨如何在Android中使用AsyncHttpClient进行Cookie的读写操作。 首先,我们要了解Cookie的基本概念。Cookie是由服务器发送到客户端(浏览器或Android应用)的小型文本文件,用于存储会话数据,如...

    前端知识Cookie, Session,Token和JWT的发展及区别(一) 上章:主要介绍一下背景和Cookie

    本篇文章主要探讨了Cookie的定义、特点、重要属性、优缺点、使用场景及其面临的问题。 1. 背景 Cookie的诞生源于HTTP协议的无状态特性。HTTP协议在每次请求和响应之间不保留任何信息,这使得服务端无法识别连续的...

    Cookie的一些操作

    这篇博客文章“Cookie的一些操作”可能涵盖了如何创建、读取、更新和删除Cookie的基本操作,以及它们在实际应用中的作用。由于没有提供具体的博客内容,我会根据常见的Cookie操作来详细讲解这一主题。 首先,Cookie...

    Express Cookie的基本使用.zip

    本篇文章将深入探讨Express中Cookie的基础使用方法,包括设置、读取和管理Cookie。 首先,让我们理解什么是Cookie。Cookie是一种小型文本文件,由服务器发送到用户的浏览器,并由浏览器在后续请求中返回给服务器。...

    jQuery 操作客户端Cookie1

    在本篇文章中,我们将探讨如何使用 jQuery 操作客户端的 Cookie,这是在网页应用中存储和检索用户数据的一种常见方法。 首先,我们需要引入 jQuery 和用于 Cookie 操作的插件。在示例代码中,我们看到引入了两个 ...

    java操作cookie

    本篇文章将深入探讨Java如何操作Cookie,包括创建、读取、更新和删除Cookie,并解决可能出现的乱码问题。 首先,我们来看如何创建Cookie。在Servlet中,我们可以使用HttpServletResponse的addCookie()方法。以下是...

    cookie_downTime.zip

    在描述中提到的文章中,开发者可能讲解了如何设置一个带有特定生存时间(如5分钟)的Cookie,并在页面上显示倒计时。这种技术可以用于限制用户在特定时间内只能执行一次操作,例如提交表单或点赞。以下是基本步骤: ...

    解决Android webview设置cookie和cookie丢失的问题

    今天,我们将探索解决Android webview设置cookie和cookie丢失的问题,帮助大家更好地使用Android webview。 一、WebView设置cookie的重要性 在Android中,WebView是一个非常重要的组件,它可以让我们在应用程序中...

    javascript中cookie对象用法实例分析.docx

    本篇文章将深入探讨JavaScript中Cookie对象的基本概念、使用方法以及具体实例。 #### 二、Cookie概述 Cookie是由服务器发送到客户端的一小段数据,它存储在用户的浏览器中,并可以在未来的请求中被发送回服务器。...

Global site tag (gtag.js) - Google Analytics