当前位置: 首页 > Web前端 > HTML

前端cookie详解

时间:2023-03-29 12:57:57 HTML

原地址cookie的基本概念cookie是存储在浏览器中的一段数据。由于http协议是无状态的,为了识别用户信息,服务器会把session保存在cookie上,后续的请求会在请求头中携带cookie发送给服务器,一般不超过4kb。通常用于告诉服务器两个请求是否来自同一个浏览器,比如保持用户登录。cookie使用场景会话状态管理(登录状态、购物车、游戏得分)个性化(自定义主题)浏览器行为跟踪(跟踪分析用户行为)cookie定义Set-Cookie:name=value[;过期=日期][;最大年龄=秒数][;域=域][;路径=路径][;安全的][;HttpOnly][;SameSite=Lax|Strict]name:cookie的key,不区分大小写value:cookie的值,必须是URL编码Expires:cookie的过期时间,值是GTM格式,例如:Sat,11Dec202113:06:06GMT,默认情况下,cookie在浏览器会话结束时被删除。但是,您也可以手动设置删除时间。Max-Age:cookie的有效期,单位s。例如token=123456;max-age=3600,表示cookie有效期为3600。域:指定域,例如domain=blog.1024nav。com只会在blog.1024nav.com域下有效Path:如果指定的路径匹配,不匹配则不会设置cookie,例如path=/blog只会在/blog路径下有效Secure:只通过HTTPS协议加密请求发送到服务器,所以可以防止中间人攻击HttpOnly:cookie只在http中传输,客户端无法通过js获取SameSitedocument.cookie:Set-Cookie:键=值;SameSite=Strict,允许服务器请求某个cookie跨站请求时不会发送,可以防止跨站请求伪造攻击现在新的浏览器,比如Chorme或者Firefox,如果网站不是HTTPS,Cookie的Secure标签不能使用cookie前缀cookie可以使用自定义前缀,只有当cookie设置为Secure指令时,它可以包含__Secure-或__Host-前缀,且Path必须是整个站点的“/”一个完整的cookieExampleSet-Cookie:id=u8dd;过期=2021年10月21日星期一07:28:00GMT;安全的;HttpOnlynodejs设置Cookie的方法response.setHeader('Set-Cookie',['name=1024nav.com','Token=kjjijwe1231dsad']);客户端操作cookie可以通过document.cookie属性新建cookie,也可以通过该属性访问非HttpOnly标签的cookiecookie安全,因为客户端可以直接通过js操作Cookies无疑容易被不良少年利用,但不代表不能使用。为了提高cookies的安全性,可以通过以下解决方案设置HttpOnly。例如NodeJs的设置方法如下response.setHeader('Set-Cookie','foo=bar;HttpOnly');设置cookie的过期时间,将SameSite的值设置为Strict或Lax,将站点升级为HTTPS