理想是火,点燃熄灭的灯。
之前做前端,更多的只关注客户端cookie(请求头)
其实也是有服务端cookie的(响应头)
const url = 'https://example.com/data'; const cookies = [ 'cookie1=value1', 'cookie2=value2' ].join('; '); // 将多个 fetch(url, { method: 'GET', // 或 'POST', 'PUT', 'DELETE' 等 headers: { 'Content-Type': 'application/json', 'Cookie': cookies // 设置多个Cookie }, // body: JSON.stringify(data) // 如果是POST请求,并且有请求体数据时使用 })
或者也可以使用 credentials: 'include'
浏览器会自动包含当前域下的所有Cookie。这意味着所有与当前网站相关的Cookie都会被发送到服务器
const url = 'https://example.com/data'; const cookies = [ 'cookie1=value1', 'cookie2=value2' ].join('; '); // 将多个 fetch(url, { method: 'GET', // 或 'POST', 'PUT', 'DELETE' 等 headers: { 'Content-Type': 'application/json', credentials: 'include' // 浏览器会自动包含当前域下的所有Cookie。这意味着所有与当前网站相关的Cookie都会被发送到服务器 }, // body: JSON.stringify(data) // 如果是POST请求,并且有请求体数据时使用 })
HTTP/1.1 200 OK Set-Cookie: sessionId=abc123; Path=/; HttpOnly Set-Cookie: theme=dark; Path=/
Set-Cookie
字段设置的。Set-Cookie
的响应后,会根据 Cookie 的属性将其存储。1.如果 Cookie 没有设置 HttpOnly 属性,可以通过 JavaScript 脚本来修改 Cookie。 // 修改名为"userId"的Cookie document.cookie = "userId=newUserIdValue; path=/; expires=Wed, 21 Oct 2025 07:28:00 GMT"; 2.浏览器开发者工具修改
设置cookie时 设置为httpOnly
Set-Cookie: sessionId=abc123; Path=/; HttpOnly
注意:httponly只能后端响应头设置。
Domain=example.com
,表示该 Cookie 在 example.com
及其子域(如 sub.example.com
)下有效。Path=/
,表示在整个网站上都有效;Path=/app
,表示仅在 /app
及其子路径下有效。Expires=Wed, 21 Oct 2025 07:28:00 GMT
Max-Age=3600
,表示 Cookie 将在一小时后过期。Secure
document.cookie
访问,防止跨站脚本攻击(XSS)。HttpOnly
Strict
:完全禁止跨站点请求发送 Cookie。Lax
:允许部分跨站请求发送 Cookie(如从外部站点导航到目标站点的 GET 请求)。None
:允许所有跨站请求发送 Cookie(需要同时设置 Secure
属性)。SameSite=Strict
一个设置了多个属性的 Cookie 示例:
Set-Cookie: sessionId=abc123; Domain=example.com; Path=/; Expires=Wed, 21 Oct 2025 07:28:00 GMT; Secure; HttpOnly; SameSite=Strict
解释:
sessionId
,值为 abc123
。example.com
及其子域名有效。通过合理设置这些属性,可以精细控制 Cookie 的行为和安全性,确保应用程序的稳定性和安全性。
作者: Bill 本文地址: http://biaoblog.cn/info?id=1715908522517
版权声明: 本文为原创文章,版权归 biaoblog 个人博客 所有,欢迎分享本文,转载请保留出处,谢谢!