`
crazier9527
  • 浏览: 1011397 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

cookie(1)

阅读更多

我们已经知道,在 document 对象中有一个 cookie 属性。但是 Cookie 又是什么?某些 Web 站点在您的硬盘上用很小的文本文件存储了一些信息,这些文件就称为 Cookie”—— MSIE 帮助。一般来说,Cookies CGI 或类似,比 HTML 高级的文件、程序等创建的,但是 javascript 也提供了对 Cookies 的很全面的访问权利。

  我们先要学一学 Cookie 的基本知识。

  每个 Cookie 都是这样的:<cookie>=<>

  <cookie>的限制与 javascript 的命名限制大同小异,少了不能用 javascript 关键字,多了只能用可以用在 URL 编码中的字符。后者比较难懂,但是只要你只用字母和数字命名,就完全没有问题了。<>的要求也是只能用可以用在 URL 编码中的字符

  每个 Cookie 都有失效日期,一旦电脑的时钟过了失效日期,这个 Cookie 就会被删掉。我们不能直接删掉一个 Cookie,但是可以用设定失效日期早于现在时刻的方法来间接删掉它。

  每个网页,或者说每个站点,都有它自己的 Cookies,这些 Cookies 只能由这个站点下的网页来访问,来自其他站点或同一站点下未经授权的区域的网页,是不能访问的。每一”Cookies 有规定的总大小(大约 2KB ),一超过最大总大小,则最早失效的 Cookie 先被删除,来让新的 Cookie“安家

  现在我们来学习使用 documents.cookie 属性。

  如果直接使用 documents.cookie 属性,或者说,用某种方法,例如给变量赋值,来获得 documents.cookie 的值,我们就可以知道在现在的文档中有多少个 Cookies,每个 Cookies 的名字,和它的值。例如,在某文档中添加“document.write(documents.cookie)”,结果显示:

name=kevin; email=kevin@kevin.com; lastvisited=index.html

这意味着,文档包含 3 Cookiesname, email lastvisited,它们的值分别是 kevin, kevin@kevin.com index.html。可以看到,两个 Cookies 之间是用分号和空格隔开的,于是我们可以用 cookieString.split('; ') 方法得到每个 Cookie 分开的一个数组(先用 var cookieString = documents.cookie)。

  设定一个 Cookie 的方法是对 documents.cookie 赋值。与其它情况下的赋值不同,向 documents.cookie 赋值不会删除掉原有的 Cookies,而只会增添 Cookies 或更改原有 Cookie。赋值的格式:

documents.cookie = 'cookieName=' + escape('cookievalue')
+ ';expires=' + expirationDateObj.toGMTString();

是不是看到头晕了呢?cookieName 表示 Cookie 的名称,cookievalue 表示 Cookie 的值,expirationDateObj 表示储存着失效日期的日期对象名,如果不需要指定失效日期,则不需要第二行。不指定失效日期,则浏览器默认是在关闭浏览器(也就是关闭所有窗口)之后过期。

  首先 escape() 方法:为什么一定要用?因为 Cookie 的值的要求是只能用可以用在 URL 编码中的字符。我们知道“escape()”方法是把字符串按 URL 编码方法来编码的,那我们只需要用一个“escape()”方法来处理输出到 Cookie 的值,用“unescape()”来处理从 Cookie 接收过来的值就万无一失了。而且这两个方法的最常用途就是处理 Cookies。其实设定一个 Cookie 只是“documents.cookie = 'cookieName=cookievalue'”这么简单,但是为了避免在 cookievalue 中出现 URL 里不准出现的字符,还是用一个 escape() 好。
  然后“expires”前面的分号:注意到就行了。是分号而不是其他。
  最后 toGMTString() 方法:设定 Cookie 的时效日期都是用 GMT 格式的时间的,其它格式的时间是没有作用的。

  现在我们来实战一下。设定一个“name=rose” Cookie,在 3 个月后过期。

var expires = new Date();
expires.setTime(expires.getTime() + 3 * 30 * 24 * 60 * 60 * 1000);
/* 三个月 x 一个月当作 30 x 一天 24 小时
x 一小时 60 x 一分 60 x 一秒 1000 毫秒 */
documents.cookie = 'name=rose;expires=' + expires.toGMTString();

为什么没有用 escape() 方法?这是因为我们知道 rose 是一个合法的 URL 编码字符串,也就是说,'rose' == escape('rose')。一般来说,如果设定 Cookie 时不用 escape(),那获取 Cookie 时也不用 unescape()

  再来一次:编写一个函数,作用是查找指定 Cookie 的值。

function getCookie(cookieName) {
var cookieString = documents.cookie;
var start = cookieString.indexOf(cookieName + '=');
// 加上等号的原因是避免在某些 Cookie 的值里有
// cookieName 一样的字符串。
if (start == -1) // 找不到
return null;
start += cookieName.length + 1;
var end = cookieString.indexOf(';', start);
if (end == -1) return unescape(cookieString.substring(start));
return unescape(cookieString.substring(start, end));
}

这个函数用到了字符串对象的一些方法,如果你不记得了(你是不是这般没记性啊),请快去查查。这个函数所有的 if 语句都没有带上 else,这是因为如果条件成立,程序运行的都是 return 语句,在函数里碰上 return,就会终止运行,所以不加 else 也没问题。该函数在找到 Cookie 时,就会返回 Cookie 的值,否则返回“null”

  现在我们要删除刚才设定的 name=rose Cookie

var expires = new Date();
expires.setTime(expires.getTime() - 1);
documents.

分享到:
评论

相关推荐

    C#cookie实现历史记录

    cookie1.Expires = DateTime.Now.AddDays(7); Response.Cookies.Add(cookie1); HttpCookie cookie2 = new HttpCookie("cookie2", "value2"); cookie2.Expires = DateTime.Now.AddDays(30); Response.Cookies....

    C#.net与vb.net中读写Cookie的方法

    1. **单值Cookie**: ```csharp Response.Cookies["userName"].Value = "admin"; Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1); ``` 这里创建了一个名为`userName`的Cookie,将其值设为`...

    cookie的使用例子

    1. **创建Cookie对象** 在Java中,可以通过`Cookie`类创建一个Cookie对象。下面的示例展示了如何创建一个名为`userId`的Cookie,并设置其值为`landril`。 ```java Cookie c = new Cookie("userId", "landril"); ...

    session和cookie1

    **1. Session** Session是在服务器端保持用户状态的机制。当用户访问网站并进行登录或其他操作时,服务器会为该用户创建一个唯一的Session ID。这个ID会被存储在服务器的内存中,关联着用户的会话数据,如用户名、...

    谷歌浏览器修改cookie方法

    1. 首先,按照上述步骤打开“Application”面板并选中目标网站的Cookie。 2. 找到你想要修改的Cookie,点击它,然后在弹出的详细信息中可以直接修改“Value”字段的值。 3. 修改完成后,直接关闭弹窗,修改会立即...

    jQuery 操作客户端Cookie1

    1. `expires`: 设置 Cookie 过期时间,通常以天为单位。例如,设置为7表示7天后过期。 2. `path`: 指定 Cookie 可见的路径,默认为当前页面路径。 3. `domain`: 设置 Cookie 的有效域名,如 `'jquery.com'`。 4. `...

    cookie和session示例

    在Web开发中,Cookie和Session是两种非常重要的用户状态管理机制。它们被广泛用于跟踪用户的登录状态、个性化设置等,确保用户在不同页面之间切换时能够保持一致性体验。接下来,我们将详细探讨Cookie和Session的...

    第22周-第08章节-Python3.5-Django之Session与Cookie1.avi

    第22周-第08章节-Python3.5-Django之Session与Cookie1.avi

    Cookie的应用例子

    1. 创建Cookie: ```java Cookie cookie = new Cookie("name", "value"); cookie.setMaxAge(60 * 60); // 设置过期时间,单位为秒 ``` 2. 发送Cookie: ```java response.addCookie(cookie); ``` 3. 读取Cookie: ``...

    cookie 文档

    - cookie1.docx:基础概念和原理介绍。 - cookie2.docx:可能涉及Cookie的高级用法或最佳实践。 - cookie4.docx:可能探讨Cookie的安全性问题和解决方案。 通过阅读这些文档,开发者可以更深入地理解Cookie的...

    cookie 自动管理

    1. 使用统一的Cookie管理器:为了保持代码的整洁和一致性,建议在整个应用中使用同一个Cookie管理器。这可以确保所有网络请求都能正确处理Cookie。 2. 处理Cookie过期:Cookie通常有生命周期,过期后不应再发送。在...

    COOKIE注入工具

    2. `cookie2.php` 和 `cookie1.php` - 这些可能是PHP源代码文件,可能包含了一些示例代码或者工具的辅助功能,比如生成测试Cookie值或解析返回的数据库信息。 3. `column.txt` 和 `table.txt` - 这两个文件可能列出...

    删除flashcookie和cookie(已经修改过了,alpha1.0.1版本)

    可以删除cookie,也包括FlashCookie。是用java编写的。各位可以放心使用。我在windows7的环境中,没有问题。已经修改过了,alpha1.0.1版本 详细说明: 该软件,可以手动配置,使部分需要保留的cookie(和Flash...

    增删改cookie js,html增删改cookie

    1. 创建Cookie: 在JavaScript中,我们可以使用`document.cookie`属性来创建Cookie。创建一个Cookie的基本格式如下: ```javascript document.cookie = "name=value; expires=expiration_date; path=path; domain=...

    cookie使用方法集

    1. 设置Cookie: 在JavaScript中,可以使用`document.cookie`属性来设置Cookie。例如,创建一个名为`username`的Cookie,值为`John`,有效期为1天: ```javascript var date = new Date(); date.setTime(date....

    cookie,jsp详细介绍

    例如,假设服务器根目录下有两个应用`web1`和`web2`,并且`web1`中有一个设置Cookie的页面`setcookie.jsp`,`web2`中有一个获取Cookie的页面`getcookie.jsp`。 在`web1`下的`setcookie.jsp`中设置Cookie: ```java...

    cookie读写,子cookie

    1. 添加Cookie:接收键值对和相关属性作为参数,创建并添加Cookie到响应。 2. 获取Cookie:根据键从请求中查找Cookie,并返回其值。 3. 更新Cookie:修改已存在Cookie的值或属性。 4. 删除Cookie:设置Cookie的过期...

    Laravel开发-cookie

    'cookie1' =&gt; 'value1', 'cookie2' =&gt; 'value2', ]); return response()-&gt;view('welcome')-&gt;withCookies($cookies); ``` 7. **自定义Cookie工厂** 如果需要更复杂的Cookie设置,你可以创建自定义的Cookie...

    cookie cookie cookie cookie cookie cookie

    cookie cookie cookie cookie cookie cookie cookie cookie cookie cookie cookie cookie cookie cookie

    IE cookie获取失败

    设置了cookie,在不关闭浏览器的情况下都没什么问题,关闭浏览器之后再重新打开,就读取不到cookie了,失效时间设置的是30天,在网上查了下,IE只支持cookie1版本,里面禁止使用"=,;"等字符

Global site tag (gtag.js) - Google Analytics