📅  最后修改于: 2023-12-03 15:12:07.612000             🧑  作者: Mango
在浏览器中,cookie是存储在客户端上的一小段文本。当用户访问网站时,可以通过cookie保存一些信息,如登录状态、购物车中的商品等。如果你是一名前端程序员,你需要了解如何在JavaScript中设置cookie。
你可以使用JavaScript的document.cookie
属性设置cookie。document.cookie
是一个字符串,它包含了当前页面的所有cookie。如果要设置新的cookie,你需要添加一个新的键值对到这个字符串中。如下所示:
document.cookie = "key=value"
这将在当前浏览器中创建一个名为key
,值为value
的cookie。
如果你要设置多个cookie,你需要在每个cookie之间添加;
进行分隔。如下所示:
document.cookie = "key1=value1; key2=value2; key3=value3"
默认情况下,cookie是会话性的,也就是说它们会在浏览器关闭时自动删除。如果你想要设置一个带有过期时间的cookie,你需要在cookie字符串中添加Expires
或Max-Age
属性。这两个属性都用于指定cookie的过期时间。其中,Expires
属性是一个GMT日期,而Max-Age
属性是指cookie在多少秒后过期。如下所示:
// 设置过期时间为1天,并将cookie写入当前浏览器
let now = new Date()
let time = now.getTime() + 24 * 3600 * 1000 // 过期时间为1天后
now.setTime(time)
document.cookie = "key=value; Expires=" + now.toUTCString()
// 或者使用Max-Age属性
document.cookie = "key=value; Max-Age=86400" // 86400秒 = 1天
HTTP协议是不安全的,因为它传输的信息是明文的,易受攻击。但是,HTTPS协议可以保证通信的安全性,因为它使用了SSL/TLS加密技术。如果你想要增强cookie的安全性,你可以设置Secure
属性,使cookie只在HTTPS连接时发送。如下所示:
document.cookie = "key=value; Secure"
有时候,你可能会想要设置一个只读的cookie,这意味着它不能通过JavaScript进行修改。你可以设置HttpOnly
属性实现这一点。如下所示:
document.cookie = "key=value; HttpOnly"
默认情况下,cookie的作用域是当前页面的URL。如果你想要让cookie在多个页面之间共享,你可以设置Path
和Domain
属性。Path
属性用于指定cookie的作用路径,而Domain
属性用于指定cookie的作用域。如下所示:
// 设置cookie的作用路径为根目录下的所有子目录和页面
document.cookie = "key=value; Path=/"
// 设置cookie的作用域为example.com及其所有子域名
document.cookie = "key=value; Domain=example.com"
如果你想要获取当前页面的cookie,你可以通过document.cookie
属性实现。document.cookie
是一个字符串,包含了当前页面的所有cookie。你可以使用正则表达式或字符串操作函数来获取特定的cookie值。如下所示:
// 获取名为key的cookie的值
function getCookieValue(key) {
let arr, reg = new RegExp("(^| )" + key + "=([^;]*)(;|$)")
if (arr = document.cookie.match(reg)) {
return arr[2]
} else {
return null
}
}
let value = getCookieValue("key") // 获取名为key的cookie的值
如果你想要删除一个cookie,你可以将它的过期时间设置为过去的某个时间,浏览器会自动将它删除。如下所示:
function deleteCookie(key) {
let now = new Date()
now.setTime(now.getTime() - 1)
document.cookie = key + "=; Expires=" + now.toUTCString()
}
deleteCookie("key") // 删除名为key的cookie
以上就是设置cookie的JavaScript相关知识,请遵守相关规则并灵活运用。