首页 > 其他分享 >Cookie和Session

Cookie和Session

时间:2023-10-03 09:44:59浏览次数:54  
标签:存储 浏览器 用户 Session Cookie 服务器

1. 前言

Cookie和Session是Web开发中常用的概念,用于在客户端和服务器之间存储和跟踪用户信息。

2. Cookie

2.1 什么是Cookie

Cookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如Microsoft Edge、Firefox、Google Chrome等都支持Cookie。Cookie是一种在Web浏览器中存储的小型文本文件,用于在客户端和服务器之间传递数据和跟踪用户信息。当您首次访问一个网站时,服务器会将一个特殊的标识符(称为cookie)发送到您的浏览器,然后浏览器将这个cookie保存在本地。

2.2 Cookie实现的功能

  • 跟踪和记忆用户的偏好设置、登录状态和其他个性化信息。
  • 记录用户的浏览习惯,以便网站提供更相关和定制的内容。
  • 支持购物车功能,存储商品信息和购买选项。
  • 进行广告定向投放,根据用户的浏览行为提供相关的广告。

2.3 Cookie的工作原理

  • 客户端请求:当用户在浏览器中发起一个请求访问一个网站时,浏览器会将该请求发送给服务器。

  • 服务器响应:服务器接收到客户端的请求后,会生成一个或多个包含要发送给浏览器的Cookie的HTTP响应。

  • Cookie发送:服务器将生成的Cookie通过HTTP响应的头部信息(Set-Cookie)发送给浏览器。Cookie通常包含了名称、值、域名、路径、过期时间等属性。

  • Cookie存储:浏览器接收到服务器发送的Cookie后,会将其保存在本地的Cookie存储中,按照域名和路径进行分类存储。

  • 后续请求:随后,当用户浏览器再次访问同一网站时,浏览器会将该网站相关的Cookie信息通过HTTP请求头部(Cookie字段)发送给服务器。

  • 服务器识别:服务器接收到包含Cookie的请求后,会解析Cookie,并根据其中的信息进行认证、跟踪用户状态等操作。服务器可以通过读取Cookie中的值来获取用户的个性化设置、登录状态等信息。

注意:对于每个网站,浏览器可以存储多个相关的Cookie,并根据域名和路径来区分。 Cookie可以设置过期时间,如果没有设置过期时间,Cookie会默认被视为会话性Cookie,即在浏览器关闭后会被删除。此外,Cookie存储在浏览器中,因此可以被其他网站访问和读取。为了保护用户的隐私和安全,网站通常会采取一些安全措施,如使用加密、签名和限制Cookie的作用域等。

3. Session

3.1 什么是Session

Session是服务器端的概念,它在服务器内存或数据库中存储一些用户信息。当用户首次访问网站时,服务器会生成一个唯一的session ID并将其存储在Cookie中发送给浏览器,同时在服务器端创建一个对应的session对象。随后,浏览器每次请求都会携带session ID,服务器通过该ID来找到对应的session对象,从而获取或更新用户信息。session相对于cookie更安全,因为用户无法修改其内容。

3.2 为什么要用Session

由于cookie 是存在用户端,而且它本身存储的尺寸大小也有限,最关键是用户可以是可见的,并可以随意的修改,很不安全。那如何又要安全,又可以方便的全局读取信息呢?于是,这个时候,一种新的存储会话机制:session 诞生了

3.3 Session的工作原理

  • 会话的创建:当用户首次访问一个网站时,服务器会为该用户创建一个唯一的会话,并为其分配一个唯一的会话ID。

  • 会话ID的传递:服务器将会话ID发送给客户端,可以通过Cookie的方式在HTTP响应中设置一个名为"session_id"的Cookie,也可以使用URL重写等方式在每个请求中传递会话ID。

  • 会话数据存储:服务器在内存或数据库等存储介质中存储与会话ID相关的数据,如用户的登录状态、购物车内容等。

  • 会话数据访问:随后,当用户再次发送请求给服务器时,会携带上一步中获取到的会话ID。服务器通过会话ID找到对应的会话数据,并进行处理和响应。

  • 会话的更新:在用户的每次请求中,服务器可以根据需要更新会话数据。例如,用户添加商品到购物车,服务器会更新购物车内容的数据。

  • 会话的销毁:会话可以有一定的生命周期,超过指定时间或用户主动注销时,服务器会销毁该会话及其相关数据。

注意:会话数据存储在服务器端,因此对服务器的负载和存储需求会有一定的影响。服务器通常会根据一定的策略管理会话的生命周期,包括设置会话超时时间、数据清理等,以平衡资源的使用和安全性的考虑。

4. 区别

  • 存储位置不同:Cookie存储在客户端浏览器中,而Session存储在服务器端。

  • 安全性不同:Cookie可以被客户端进行修改或删除,存在一定的安全隐患;而Session存在于服务器的内存中,对于客户端是不可见的,因此比Cookie更加安全。

  • 存储容量不同:Cookie存储容量比较小,通常只能存储几KB的数据,而Session存储容量相对较大,可以存储数MB的数据。

5. 联系

  • 都是用于存储和维护用户状态的技术。

  • 可以解决HTTP协议的无状态问题,保持用户在一段时间内的登录状态。

  • 在实际应用中经常会同时使用Cookie和Session,通过Cookie维护Session的标识符,实现用户状态的保存和管理。

6. 总结

Cookie是由服务器发送给浏览器存储的数据,而Session是服务器端存储用户信息的一种机制。它们都可以用于跟踪用户状态和记住用户信息,但安全性和存储位置不同。Session比Cookie相比较Session更加安全一点。但Restful架构中提到,服务端不能用来保存用户的状态,故一般用Cookie来保存一些信息。

标签:存储,浏览器,用户,Session,Cookie,服务器
From: https://www.cnblogs.com/one-xiaoqiang/p/17740810.html

相关文章

  • 获取个人中心的信息时需要带上cookie
    importurllib.requestimporturllib.parseheaders={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/96.0.4664.110Safari/537.36Edg/96.0.1054.62','cookie':&#......
  • NodeJS分别实现token、cookie登录注册鉴权(KOA2)
    源码https://github.com/NaCl-131/node-study.git包npminstallkoanpminodemon-D#保存自动更新npmikoa-router#路由npmikoa-body#解析post的传参npmimysql2sequelize#mysql和一个ORM工具npmijsonwebtoken#JWTnpmidotenv#.env文件npmikoa-sess......
  • 在Spring Boot API Gateway中实现Sticky Session
    文章目录小结问题在APIGateway中实现StickySession在同一个APIGateway中同时支持StickySession和RoundRobinLoadBalancer参考小结在Kubernetes微服务的云环境中,如何在SpringBootAPIGateway中实现StickySession,当服务请求被某一个服务器处理后,所有后续的请求都被转发到被......
  • 【项目心得】在nest中使用fastify-cookie
    包安装确保你在nest项目中安装了 fastify, @fastify/cookie, @nestjs/platform-fastify 等包npmifastify@fastify/cookie@nestjs/platform-fastify fastify的引入和fastify-cookie的注册src/main.tsasyncfunctionbootstrap(){constlogger:Logger=new......
  • SQLSession 的线程安全
    SQLSession的线程安全性取决于具体的实现和配置方式。SQLSession是MyBatis框架中用于执行数据库操作的核心接口之一。以下是关于SQLSession线程安全性的一些注意事项:SqlSessionFactory的线程安全性:SqlSessionFactory是用于创建SQLSession的工厂类。通常情况下,SqlSessionF......
  • Cookie和Session的区别
    在工作中,我们经常会遇到Cookie和Session这两个概念。对于它们的区别,也是面试中被问到的高频题目。因此,在本文中将简要介绍一下Cookie和Session之间的区别。 存储位置:Cookie存储在客户端(浏览器),而Session存储在服务器端。 安全性:cookie不是很安全,别人可以分析存放在本地的cook......
  • Oracle process/session/cursor/tx/tm的简单学习
    Oracleprocess/session/cursor/tx/tm的简单学习Oracle的部署模式Oracle安装时有专用模式和共享模式的区别共享模式(Sharedmode):在共享模式下,会话可以同时读取数据库的数据,多个会话可以并发地进行读取操作。这意味着多个会话可以共享相同的数据快照,并且彼此之间不会阻塞。......
  • HTTP安全响应头配置之Set-Cookie
    Cooke请求头对应Cookie字段、响应头对应Set-Cookie字段建议安全设置的cookie值如下Set-Cookie:<key>=<value>;Expires=<expriesDate>[;domain=domain][;path=path];Secure;HttpOnly;SameSite=strictvalue:一般是键值对expires:表示会在xxx时间之后失效(浏览器不会再发送给服务器......
  • cookie和session的区别
        ......
  • 访问api地址时添加cookie头,防止cookie刷新
    putSession(){wx.request({url:'http://127.0.0.1:8000/api/test1',success(res){console.log(res);wx.setStorageSync('session',res.cookies)},dataType:'json'})},get......