Set-Cookie
是 HTTP 响应头的一部分,用于在客户端(通常是浏览器)设置一个 cookie。JavaScript 中可以通过 document.cookie
属性来读取和设置 cookie,但更常见的是通过服务器端发送 Set-Cookie
头来设置。
Cookie 是一种存储在用户浏览器上的小型文本文件,它可以用来记录用户的某些信息,如登录状态、偏好设置等。服务器可以通过 Set-Cookie
头将 cookie 发送到客户端,客户端在后续请求中会自动将相关的 cookie 发送回服务器。
当服务器使用 Set-Cookie
头设置 cookie 时,可以包含多个参数来控制 cookie 的行为:
Expires
指定一个具体的日期和时间,而 Max-Age
指定 cookie 从设置开始有效的秒数。服务器端(例如使用 Node.js 和 Express):
res.cookie('username', 'JohnDoe', {
maxAge: 900000, // 15 minutes
httpOnly: true,
secure: true, // 仅在 HTTPS 中发送
sameSite: 'strict' // 严格模式
});
客户端(JavaScript):
// 设置 cookie
document.cookie = "username=JohnDoe; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/";
// 读取 cookie
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i].trim();
if (cookie.indexOf("username=") == 0) {
var username = cookie.substring("username=".length, cookie.length);
}
}
问题:Cookie 无法设置或读取。
原因:
Secure
属性设置但网站不是通过 HTTPS 访问。SameSite
属性设置为 Strict
或 Lax
,但在跨站请求中需要发送 cookie。解决方法:
Secure
属性。SameSite
属性的值。通过理解这些基础概念和参数,可以更有效地使用 cookie 来增强网站的功能和用户体验。