Cookie基础知识
cookie有9个属性:
Name: cookie名
Value: cookie值
Domain: cookie的域。如果设成.test.com,那么子域名a.test.com和b.test.com,都可以使用.test.com的cookie
Path: cookie的路径,一般设置成/即可
Expires: cookie过期时间。不设置,则为Session会话期,关闭页面,cookie失效
HttpOnly: 设置为true,则js读取不到cookie
Secure: 标记为Secure的cookie,只能通过https请求发送
SameSite: 限制第三方cookie。有3个值:Strict/Lax/None。chrome51新增,chrome80+强制执行
Strict: 仅允许发送同站点请求的的cookie
Lax: 允许部分第三方请求携带cookie,即导航到目标网址的get请求。包括超链接<a href='...' />,预加载<link rel="prerender" />和get表单<form method="GET" />三种形式发送cookie
None: 任意发送cookie,设置为None,需要同时设置Secure,意味着网站必须采用https,若同时支持http和https,可以将http用307跳转到https
Priority:优先级,chrome的提案,定义了三种优先级,Low/Medium/High,当cookie数量超出时,低优先级的cookie会被优先清除
cookie读写脚本
function getCookie(key){ let cookies = document.cookie ? document.cookie.split('; ') : []; let i=0; let l=cookies.length; for(;i<l;i++){ let entry = cookies[i].split('='); if(entry[0] == key){ return entry[1]; } } return null; } function setCookie(key,value,opts){ if (typeof opts.expires === 'number') { var days = opts.expires, t = opts.expires = new Date(); t.setMilliseconds(t.getMilliseconds() + days * 864e5); } return (document.cookie = [ encode(key), '=', String(value), opts.expires ? '; expires=' + opts.expires.toUTCString() : '', opts.path ? '; path=' + opts.path : '', opts.domain ? '; domain=' + opts.domain : '', opts.secure ? '; secure' : '' ].join('')); } function removeCookie(key){ setCookie(key,'',{expires:-1}); return !getCookie(key); } function encode(key){ return encodeURIComponent(key); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2017-05-06 浏览器缓存