首页 > 编程语言 >关于node中cookie的相关研究

关于node中cookie的相关研究

时间:2024-10-25 23:20:48浏览次数:3  
标签:node 这个 浏览器 Cookie 关于 设置 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可能会被外人非法劫持,这个也导致了token的产生,目前常见的对应包jsonwebtoken,通过公钥/私钥进行加密,现在的加密技术已经比较成熟了

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

标签:node,这个,浏览器,Cookie,关于,设置,cookie,属性
From: https://blog.csdn.net/qq_73917015/article/details/143245298

相关文章

  • 关于期望dp的一些个人理解
    本人概率期望菜的一批,写一下博客来加深印象期望的基本定义首先期望本身是一个加权平均值,表示把每种情况按照概率发生后总和除以总的发生次数,这是定义法,然后合并一下就是:\[E=\sum_ip_i\timesval_i\]其中\(p_i\)表示事件\(i\)发生的概率,满足\(\sump_i=1\)关于期望......
  • 关于组合数学
    排列组合的一些公式及推导(非常详细易懂)错排公式\[D_1=0,D_2=1,D_n=(n-1)(D_{n-2}+D_{n-1})\]特殊性质:\[C^0_n=1\]\[C^m_n=C^{n-m}_n\]\[C^m_n=C^{m-1}_{n-1}+C^{m}_{n-1}\]其中第三个还和杨辉三角有关。另外,还有一些公式:从\(n\)个不同的元素取\(m\)个元素(可以......
  • session和cookie的区别
    本文将探讨Session和Cookie两种Web开发中常用的技术之间的区别。Session和Cookie都用于在Web应用程序中跟踪用户的状态和信息,但它们在实现和使用方面存在明显的差异。通过深入研究它们的特点,我们可以更好地理解何时选择哪种方法以满足特定的需求。1.数据存储位置Cookie:Cookie......
  • 关于手动关闭多个el-popover的方法且不使用visible属性
    1.在el-popover使用ref<el-popoverref="motifyPopover":width="260"trigger="click"popper-class="modify-popover"/>2.声明motifyPopoverconstmotifyPopover=ref<InstanceType<typeofElPopover>>()......
  • HarmonyOS:Node-API实现跨语言交互
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/18502733➤如果链接不是为敢技术的博客园地址,则可能是......
  • 关于ubuntu系统升级遇到的问题:upgrades to the development release are only.......
    主要问题在于使用的是命令:sudodo-release-upgrade-d这将会寻找最新的版本进行安装,但是如果最新版本不稳定的话请求会受到拒绝,导致更新无法进行。具体区别如下:do-release-upgrade是Ubuntu系统用于升级到新版本的命令。当你运行这个命令时,系统会检查是否有新版本可用,并且会自......
  • Node.js和Python在服务器端编程上有什么不同
    Node.js和Python在服务器端编程上有以下不同:1.设计哲学不同;2.性能不同;3.库支持和框架不同;4.同步/异步处理不同;5.语法简洁性不同;6.用途和适用场景不同。具体来说,Node.js基于事件驱动和非阻塞I/O模型,优于高并发处理,而Python则以简洁易读著称,广泛应用于科学计算、人工智能等领域。......
  • NodeJS期刊投稿信息查询系统-毕业设计源码06128
    摘要本文详述了一个基于微信小程序和Node.js技术的期刊投稿信息查询系统的设计与实现过程。该系统旨在为用户提供便捷、高效的投稿信息查询服务,同时为管理员提供强大的后台管理功能。通过微信小程序,用户可以轻松登录、注册,并访问首页查看期刊信息、投稿状态以及网站公告。......
  • Node.js
    Node.js是什么◼官方对Node.js的定义:Node.js是一个基于V8JavaScript引擎的JavaScript运行时环境。◼也就是说Node.js基于V8引擎来执行JavaScript的代码,但是不仅仅只有V8引擎:前面我们知道V8可以嵌入到任何C++应用程序中,无论是Chrome还是Node.js,事实上都是嵌入了V8引......
  • 关于决策树的理解
    近期在项目中使用了规则树这一设计模式,感觉和决策链来说是有些区别的1.决策链是链型的,走的是链,流程都要完整的走一遍2.决策链用的一种嵌套,基于函数结尾重新调用next的函数直至结束但是规则树不一样规则树是基于类似二叉树的结构,有的通过有的不通过,并且它每层都用List<M......