关于node中cookie的相关研究

在请求头中加入set-cookie字段,客户端收到这个Set-Cookie的ֽ应后,在之后的请求时会在Cookie中上这个值。
一般格式可以参考如下

Set-Cookie: token=dywuh1g87; Expires=Wed, 11 Aug 2024 07:28:00 GMT; Secure; HttpOnly

了解一下cookie

解释一下常用的几个属性

  • Expires 这个属性用于控制 Cookie 的生命周期。Expires 指定了 Cookie 的过期日期和时间,如果这个属性没有设置会在浏览器关闭时被删除。
  • Max-Age 这个属性同样用于控制 Cookie 的生命周期。但Max-Age 则表示 Cookie 自创建起的最大有效时间(以秒为单位)
  • Domain 这个属性指定了 Cookie 的适用域名。默认情况下,Cookie 仅适用于响应中设置 Set-Cookie 头的域名。如果设置了 Domain 属性,Cookie 可以在该域名的所有子域中使用。举例来说,Domain=baidu.com 会让 Cookie 在 baidu.com 以及 sub.baidu.com 等子域中都可用。
  • Path 这个属性规定了 Cookie 应该在哪个路径下被发送。默认情况下,Cookie 适用于请求路径及其子路径。例如,Path=/a允许 Cookie 仅在 /a及其子路径下有效,而在 /c目录下则不会发送这个 Cookie。
  • Secure 如果设置了 Secure 属性,Cookie 只能通过 HTTPS 连接发送,而不能进行HTTP连接发送,这样确保数据在传输过程中被加密。这在处理敏感信息时尤其重要,比如登录凭据或支付信息。
  • HttpOnly 这个属性限制了 Cookie 只能通过 HTTP 协议访问,而不能通过 JavaScript 代码访问。这增加了 Cookie 的安全性,因为它减少了 XSS(跨站脚本攻击)等安全威胁的可能性。

值得注意的是:expires和max-age在设置后,如果设置了时间,浏览器会将cookie写入磁盘,下次打开依旧有效,但expires存在可以忽略的问题,expires的时间设置后,当客户端和浏览器端时间不匹配时,就会产生偏差。

Set-Cookie是较少的,在报头中可能ߚ在多字段。为此res.setHeader的第二个参数可以是一个数组

cookie存在的性能问题

由于Cookie的实现机制,一旦服务端向客端发了设置Cookie的意图,除非Cookie过期
否则客户端每次请求都会带cookie到服务器,一旦设置的Cookie过多,,将会导致报头较大。所以减少不必要的cookie,毕竟流量就是钱嘛。

cookie性能浪费的几个解决方案

  1. 细分path
  2. 为静态组件使用不同的域名

cookie纯在的安全问题

  • cookie可以被用户篡改

早期的服务器为了记录用户信息,浏览器会将信息通过cookie传给服务器,这个导致后来的服务器session的出现。cookie会和服务器的session纯在映射关系,但是一旦session过多,就会达到node内存上限(这个上限可以手动增大),这个主要是由于V8的原因,V8一开始目标就是浏览器运行,这个解决的方法可以是redis高速缓存,session的出现一定程度上解决了用户再主动篡改,但是cookie可能会被外人非法劫持,这个也导致了加密手段通过公钥/私钥进行加密的产生,目前主流常见的包jsonwebtoken,是跨域认证的主要手段,也不用在服务器上存储信息

如果我的文章出现问题,欢迎大佬提出意见!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值