当前位置:首页 > 行业动态 > 正文

cookie的用法 js

在JavaScript中,可以使用 document.cookie来获取、设置和删除cookie。 document.cookie = "username=John Doe";用于设置名为”username”的cookie,值为”John Doe”。

在JavaScript中,Cookie是一种用于存储少量数据的方式,通常用于保存用户登录状态、偏好设置等,以下是关于Cookie用法的详细回答:

创建Cookie

1、使用document.cookie

通过直接操作document.cookie属性来创建Cookie。

     document.cookie = "username=JohnDoe";

如果要设置Cookie的过期时间(以天为单位),可以使用expires属性:

     document.cookie = "username=JohnDoe; expires=Fri, 31 Dec 9999 23:59:59 GMT";

也可以设置其他属性,如path(指定Cookie的有效路径)和domain(指定Cookie的有效域名):

     document.cookie = "username=JohnDoe; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/; domain=.example.com";

2、使用第三方库(如js-cookie)

引入js-cookie库后,可以使用其提供的方法来简化Cookie的操作,创建一个名为name、值为value的Cookie:

     Cookies.set('name', 'value');

要设置Cookie的有效期为4天,可以这样写:

     Cookies.set('name', 'value', { expires: 4 });

还可以设置Cookie的其他属性,如pathdomain

     Cookies.set('name', 'value', { expires: 4, path: '', domain: '.example.com' });

读取Cookie

1、使用document.cookie

cookie的用法 js

通过访问document.cookie属性来获取所有的Cookie信息,然后解析出所需的Cookie值。

     var cookies = document.cookie.split(";");
     for (var i = 0; i < cookies.length; i++) {
         var cookie = cookies[i].trim();
         if (cookie.startsWith("username=")) {
             var value = cookie.substring("username=".length);
             console.log(value); // 输出JohnDoe
         }
     }

2、使用第三方库(如js-cookie)

使用js-cookie库提供的get方法来读取指定名称的Cookie值。

     var value = Cookies.get('name');
     console.log(value); // 输出value

如果要读取所有可见的Cookie,可以使用get()方法不带参数的形式:

     var allCookies = Cookies.get();
     console.log(allCookies); // 输出一个包含所有Cookie键值对的对象

删除Cookie

1、使用document.cookie

通过设置一个同名的Cookie,并将其过期时间设置为过去的时间,从而删除该Cookie。

     document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT";

2、使用第三方库(如js-cookie)

cookie的用法 js

使用js-cookie库提供的remove方法来删除指定名称的Cookie。

     Cookies.remove('name');

如果要删除当前页面所在路径下的某个有效的Cookie,可以这样写:

     Cookies.set('name', 'value', { path: '' });
     Cookies.remove('name', { path: '' });

JSON支持

1、存储JSON对象

当需要存储复杂的数据结构时,可以将对象序列化为JSON字符串后再存储到Cookie中。

     var userInfo = { name: "John Doe", age: 30 };
     document.cookie = "userInfo=" + encodeURIComponent(JSON.stringify(userInfo));

或者使用js-cookie库的set方法并传入json选项:

     Cookies.set('userInfo', userInfo, { json: true });

2、读取JSON对象

从Cookie中读取JSON字符串后,再反序列化为对象。

cookie的用法 js

     var cookieValue = getCookie("userInfo");
     var userInfo = JSON.parse(decodeURIComponent(cookieValue));
     console.log(userInfo); // 输出{ name: "John Doe", age: 30 }

使用js-cookie库时,可以直接使用getJSON方法来获取JSON对象:

     var userInfo = Cookies.getJSON('userInfo');
     console.log(userInfo); // 输出{ name: "John Doe", age: 30 }

FAQs

1、:如何设置Cookie的有效期为特定的天数?

:可以通过设置expires属性来指定Cookie的有效期,要设置一个有效期为7天的Cookie,可以这样写:

     var d = new Date();
     d.setTime(d.getTime() + (7*24*60*60*1000));
     var expires = "expires="+ d.toUTCString();
     document.cookie = "username=JohnDoe; " + expires + "; path=/";

或者使用js-cookie库时,可以直接在set方法中传入expires选项:

     Cookies.set('username', 'JohnDoe', { expires: 7 });

2、:如何确保Cookie只能通过HTTPS协议传输?

:可以设置Cookie的secure属性为true,这样Cookie将仅通过HTTPS协议传输。

     document.cookie = "username=JohnDoe; secure";

使用js-cookie库时,可以在set方法中传入secure选项:

     Cookies.set('username', 'JohnDoe', { secure: true });