如何使用JavaScript中的document.cookie属性?

作者:林芝淘贝游戏开发公司 阅读:79 次 发布时间:2023-06-06 12:16:20

摘要:在 web 开发中,cookie 是一种常见的应用,它可用于跨不同页面共享数据,以及持久保存用户信息。在 JavaScript 中, document 对象提供了访问 cookie 的 cookie 属性。但是,如果你不熟悉文档对象模型(DOM)和 cookie 的工作原理,也可能会花费大量时间来理解和使用它。本文...

在 web 开发中,cookie 是一种常见的应用,它可用于跨不同页面共享数据,以及持久保存用户信息。在 JavaScript 中, document 对象提供了访问 cookie 的 cookie 属性。但是,如果你不熟悉文档对象模型(DOM)和 cookie 的工作原理,也可能会花费大量时间来理解和使用它。本文将介绍如何使用 JavaScript 中的 document.cookie 属性来设置、读取和删除 cookie。

如何使用JavaScript中的document.cookie属性?

1. 读取 cookie

读取 cookie 最简单的方法是通过 JavaScript 访问 document.cookie 属性。这样就可以获得当前页面所有的 cookie。 document.cookie 属性返回一个包含所有 cookie 的字符串。如果当前页面没有 cookie,则返回空字符串。

例如:

```

console.log(document.cookie);

```

输出结果可能会像这样:

```

"user_name=my_name; age=25"

```

如果要读取特定的 cookie,需要采用一些技巧,因为 document.cookie 的返回值是一个字符串,该字符串包含多个 cookie。下面展示了如何获取特定的 cookie 值:

```

function getCookie(name) {

let cookies = document.cookie.split("; ");

for (let i = 0; i < cookies.length; i++) {

let cookie = cookies[i].split("=");

if (cookie[0] === name) {

return decodeURIComponent(cookie[1]);

}

}

}

```

此函数接收一个 cookie 名称作为参数,然后使用 split()分隔符分割 document.cookie 字符串,将每个 cookie 存储为字符串数组。接下来,使用一个 for 循环在数组中查找具有特定名称的 cookie,并使用 split() 方法将 cookie 名称和值分开。最终,如果找到该 cookie,则返回其值。

2. 创建 cookie

在浏览器中创建 cookie 的方法非常简单。只需在文档对象的 cookie 属性中设置一个字符串,该字符串包含要设置的 cookie 的名称、值以及其他可选参数。

例如,以下代码段将创建一个名为 user_name 的 cookie,其值为 my_user_name,有效期为 7 天:

```

let expiration = new Date();

expiration.setDate(expiration.getDate() + 7);

document.cookie = "user_name=my_user_name" + "; expires=" + expiration.toUTCString();

```

在这个例子中,我们首先使用 Date 对象创建了一个新日期,它的值是当前日期加上 7 天。然后将这个值传入 expires 参数,将 cookie 设置为 7 天有效期。最后,将 cookie 字符串分配给文档对象的 cookie 属性。

可以通过设置这些可选参数来控制 cookie 的一些属性,如下表所示:

| 参数 | 描述 |

| ------------ | ------------ |

| expires | cookie 的过期时间。 |

| path | 如果指定路径,则只有访问该路径的页面才能访问 cookie。 |

| domain | 如果指定域,则只有访问该域名的页面才能访问 cookie。 |

| secure | 如果设置为 true,则只有通过 HTTPS 协议发送的请求才能访问 cookie。 |

如果要为 cookie 设置多个属性,只需将这些属性添加到 cookie 字符串中即可。例如,以下是设置具有多个属性的 cookie 的示例:

```

let expiration = new Date();

expiration.setDate(expiration.getDate() + 7);

document.cookie = "user_name=my_user_name" + "; expires=" + expiration.toUTCString() + "; domain=example.com; path=/";

```

在此示例中,除了设置 cookie 的名称、值和到期日期外,还将 domain 参数设置为 "example.com",将 path 参数设置为 "/",这意味着只有来自 "example.com" 域名根目录的请求才能访问该 cookie。

3. 修改 cookie

要修改 cookie,可以使用与创建 cookie 相同的方法,只需将名称、值以及所有需要更改的其他属性添加到 cookie 字符串中即可。以下是修改 cookie 的示例:

```

let expiration = new Date();

expiration.setDate(expiration.getDate() + 7);

document.cookie = "user_name=new_user_name" + "; expires=" + expiration.toUTCString() + "; domain=example.com; path=/";

```

在这个例子中,我们修改了 user_name 的值,并将到期日期延长到 7 天。同样,我们还将 domain 参数设置为 "example.com" 和 path 参数设置为 "/"。

需要注意的是,如果要修改 cookie 的值、到期日期或任何其他属性,必须重新设置整个 cookie,即使名称和其他参数不变。

4. 删除 cookie

要删除特定的 cookie,可以将其到期日期设置为过去的日期,这样浏览器会自动将其删除。以下是删除特定 cookie 的示例:

```

let expiration = new Date();

expiration.setDate(expiration.getDate() - 1);

document.cookie = "user_name=; expires=" + expiration.toUTCString() + "; domain=example.com; path=/";

```

在这个例子中,我们将 user_name 的到期日期设置为过去的日期,即删除该 cookie。注意,为了删除 cookie,我们将其值设置为空字符串。

如果要删除网站上的所有 cookie,可以设置到期日期为过去的日期。以下是删除所有 cookie 的示例:

```

let cookies = document.cookie.split("; ");

for (let i = 0; i < cookies.length; i++) {

let cookie = cookies[i];

let expiration = new Date();

expiration.setDate(expiration.getDate() - 1);

document.cookie = cookie.trim() + "=; expires=" + expiration.toUTCString() + "; domain=example.com; path=/";

}

```

在这个例子中,我们首先获取当前所有 cookie,然后使用 for 循环将它们一一删除。注意,为了删除 cookie,我们将其值设置为空字符串。

总结

本文介绍了如何使用 JavaScript 中的 document.cookie 属性来读取、创建、修改和删除 cookie。请记住,在创建、修改或删除 cookie 时,需要设置其名称、值和到期日期,并使用可选参数设置其它属性,如域、路径和安全性。如果您了解了 cookie 的工作原理和文档对象模型(DOM),并使用合适的技巧,那么使用 JavaScript 中的 document.cookie 属性就会变得轻而易举。

  • 原标题:如何使用JavaScript中的document.cookie属性?

  • 本文链接:https://qipaikaifa1.com/jsbk/9540.html

  • 本文由林芝淘贝游戏开发公司小编,整理排版发布,转载请注明出处。部分文章图片来源于网络,如有侵权,请与淘贝科技联系删除。
  • 微信二维码

    CTAPP999

    长按复制微信号,添加好友

    微信联系

    在线咨询

    点击这里给我发消息QQ客服专员


    点击这里给我发消息电话客服专员


    在线咨询

    免费通话


    24h咨询☎️:189-2934-0276


    🔺🔺 棋牌游戏开发24H咨询电话 🔺🔺

    免费通话
    返回顶部