document.cookie
来获取、设置和删除cookie。
document.cookie = "username=John Doe";
用于设置名为”username”的cookie,值为”John Doe”。
在JavaScript中,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的其他属性,如path
和domain
:
Cookies.set('name', 'value', { expires: 4, path: '', domain: '.example.com' });
1、使用document.cookie
:
通过访问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键值对的对象
1、使用document.cookie
:
通过设置一个同名的Cookie,并将其过期时间设置为过去的时间,从而删除该Cookie。
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT";
2、使用第三方库(如js-cookie):
使用js-cookie库提供的remove
方法来删除指定名称的Cookie。
Cookies.remove('name');
如果要删除当前页面所在路径下的某个有效的Cookie,可以这样写:
Cookies.set('name', 'value', { path: '' }); Cookies.remove('name', { path: '' });
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字符串后,再反序列化为对象。
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 }
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 });