js-cookie的cookie默认过期时间是多久
时间: 2023-07-25 13:50:36 浏览: 280
js-cookie默认的过期时间是在浏览器会话结束时过期,也就是说,当用户关闭浏览器时Cookie会被删除。这个过期时间是由浏览器控制的,不同的浏览器可能有不同的行为。如果你需要更精细的控制Cookie的过期时间,可以使用js-cookie提供的expires、max-age和expires属性来设置Cookie的过期时间。其中,expires属性可以设置具体的过期时间,max-age属性可以设置Cookie的最大存活时间,expires属性和max-age属性都可以用来控制Cookie的过期时间。
相关问题
js-cookie cookie的set 原理
### js-cookie 设置 Cookie 的实现与工作原理
js-cookie 是一个用于处理浏览器 Cookies 的轻量级 JavaScript 库。通过该库可以方便地设置、读取以及删除 cookies。
#### 设置 Cookie 的方法签名
要使用 js-cookie 来设置 cookie,通常会调用 `Cookies.set` 方法:
```javascript
Cookies.set('name', 'value', { expires: 7, path: '' });
```
此函数接受三个参数:
- **键名** (`string`):表示存储的数据名称。
- **值** (`any`):希望保存的内容,会被自动转换成字符串形式。
- **选项对象** (`object`, 可选):配置项,比如过期时间、路径等属性[^1]。
#### 主要功能特性
- **自定义有效期**
使用者可以通过传递带有 `expires` 属性的对象来指定 cookie 的有效期限。如果未提供,则默认为会话期间有效(即关闭浏览器标签页后失效)。当设置了具体的天数时,它会在给定数量的日历日后到期;也可以传入 Date 对象以精确控制日期和时间。
- **路径范围设定**
路径决定了哪些页面能够访问这个特定的 cookie。如果不特别指明,默认情况下只有创建它的 URL 所属目录下的资源能获取到这条记录。而通过显式声明 `/` 或其他路径模式,可以让更广泛甚至整个域名内的网页共享同一个 cookie 实例。
- **域作用域管理**
域字段允许跨子域共享 cookie 数据。这使得不同主机上的应用程序之间更容易交换信息而不必担心同源策略带来的限制。
- **安全标志位支持**
Secure 和 HttpOnly 参数增强了安全性。前者确保 cookie 只能在 HTTPS 连接下传输,后者阻止客户端脚本读写操作从而防止 XSS 攻击风险。
- **编码解码机制**
Js-cookie 自动处理特殊字符转义问题,在存入之前会对原始数据做适当编码,并在取出之后负责还原其本来面目以便于后续解析利用。
```javascript
// 示例代码展示如何使用上述提到的功能
const oneDay = 24 * 60 * 60 * 1000; // One day in milliseconds
let tomorrow = new Date(Date.now() + oneDay);
Cookies.set('username', 'John Doe', {
expires: tomorrow,
path: '/',
domain: '.example.com',
secure: true,
httpOnly: false
});
```
js-cookie存token
### 使用 js-cookie 存储 Token
为了在 JavaScript 中使用 `js-cookie` 库来存储和管理 token,可以通过以下方式实现:
#### 安装库
首先确保已经安装了 `js-cookie`。如果尚未安装,则可通过 npm 或 yarn 进行安装。
```bash
npm install js-cookie
```
或者
```bash
yarn add js-cookie
```
#### 设置 Cookie
要设置一个名为 `token` 的 cookie 并赋予其特定值,可按照如下代码执行:
```javascript
import Cookies from 'js-cookie';
// 设置Token到Cookie中
Cookies.set('token', 'your_token_value_here', {
expires: 7, // 默认有效期为7天
path: '/', // 路径应覆盖整个应用
sameSite: 'lax',
secure: true,
httpOnly: false // 如果是在前端操作则设为false;如果是后端设置并希望防止XSS攻击则建议设为true
});
```
这段代码不仅设置了 token 值还指定了几个重要的属性选项[^2]。
- **expires**: 表示该 cookie 的过期时间,默认单位是天数。
- **path**: 指定此 cookie 可用于哪个路径下的请求发送给服务器。
- **sameSite**: 控制浏览器是否应该附加同站或跨站点请求中的 cookies。
- **secure**: 当设置为 `true` 时,意味着这个 cookie 只能通过 HTTPS 协议传输。
- **httpOnly**: 配置成 `true` 后,JavaScript 就无法访问这个 cookie,从而提高安全性[^5]。
#### 获取 Cookie
当需要从客户端读取已保存的 token 时,可以调用相应的 API 方法:
```javascript
const userToken = Cookies.get('token');
console.log(`User's current token is ${userToken}`);
```
上述命令会返回之前设定好的 token 字符串,如果没有找到对应的 key 则返回 `undefined`。
#### 移除 Cookie
一旦不再需要某个特定的 token 记录,就可以将其删除:
```javascript
Cookies.remove('token'); // 清理指定名称的cookie数据
```
这将有效地移除当前域下所有匹配路径上的 `token` 键名关联的数据条目。
阅读全文
相关推荐
















