首页 > 其他分享 >Web开发必备知识之Session会话

Web开发必备知识之Session会话

时间:2024-11-20 10:48:34浏览次数:3  
标签:Web 浏览器 请求 会话 sessionId Session Cookie 服务器

简介:web开发Session知识

什么是Session

背景:HTTP协议作是无状态协议,⽆无状态指每次request请求之前是相互独⽴立的,当前请求
并不不会记录它的上⼀一次请求信息。
存在这样的问题,既然⽆无状态,那完成⼀一套完整的业务逻辑,需要发送多次请求,那么怎么
标识这些请求都是同个浏览器器操作呢?
cookie和session都是为了了弥补http协议的无状态特性,对server端来说无法知道两次http请
求是否来⾃自同一个⽤用户,利⽤用cookie和session就可以让server端知道多次http请求是否来⾃同⼀用户。

生成和使用流程(和Cookie知识点一样,两者互相配合)

  • 览器器第⼀一次发送request请求到服务器器,服务器器除了了返回请求的response之外,还给请求分配⼀一个唯⼀一标识sessionId和response⼀一并返回给浏览器器
  • 服务器器在本地创建⼀一个map结构,专⻔门以key-value存储这个sessionId和浏览器器的关系
  • 当浏览器器的第⼀一次请求后已经分配⼀一个sessionId,当第⼆二次访问时会⾃自动带上这个标识sessionId
  • 服务器器通过查找这个sessionId就知道⽤用户状态了了,并更更新sessionId的最后访问时间。
  • 注意: Session是有时限性的:⽐比如如果30分钟内某个session都没有被更更新,服务器器就会删除这个它。

总结:

. Cookie 和 Session 的关系

  • Cookie 是存储在客户端(浏览器)中的小型文本文件,用于在客户端和服务器之间传递少量信息。Cookie 的典型用途是:

    • 保存用户的登录状态。
    • 跟踪用户的会话。
    • 保存用户偏好设置。
  • Session 是由服务器维护的一种用户会话状态管理方式。Session 通过服务器端的 Map(或其他数据结构)存储和管理用户会话数据,如登录信息、购物车内容等。

关键点:
  1. Session 依赖于 Cookie

    • 在大多数情况下,Session 的标识符(如 JSESSIONID)会通过 Cookie 发送到客户端。
    • 每次客户端发送请求时,浏览器会自动将存储的 Cookie(包括 JSESSIONID)发送回服务器,服务器根据这个 JSESSIONID 找到对应的 Session
  2. 如果客户端禁用了 Cookie,则可以通过 URL 重写(将 JSESSIONID 附加到 URL 中)来传递 Session 标识符。

标签:Web,浏览器,请求,会话,sessionId,Session,Cookie,服务器
From: https://blog.csdn.net/weixin_67996964/article/details/143904771

相关文章

  • 安利一款超级好用的 WebSocket 调试工具
    大家好呀!今天我要安利一个超级好用的WebSocket调试工具——Apifox!作为一个经常和WebSocket打交道的开发者,我不得不说这真的是一个相见恨晚的神器!为什么要用Apifox?痛点Apifox的解决方案WebSocket调试工具难找Apifox原生支持WebSocket调试工具切换繁琐一站式解......
  • WEBP中无损模式下的四种转换类型
    四种转换类型应用于对图像数据熵编码之前,通过对空间和颜色相关性进行建模来降低图像数据的熵。一张图片可以进行四种类型的转换,每个转换最多只能使用一次。while(ReadBits(1)){ //Transformpresent. //Decodetransformtype. enumTransformTypetransform_......
  • w047基于web的大学生就业招聘系统的设计与实现
    ......
  • w046基于web的古典舞在线交流平台的设计与实现
    ......
  • 如何利用Spring Boot搭建Web应用来获取和整合数据?
    以下是利用SpringBoot搭建Web应用来获取和整合数据的基本步骤:创建SpringBoot项目•可以通过SpringInitializr(在线工具或者集成在IDE中的插件)创建项目,选择需要的依赖,比如Web依赖(包含SpringMVC等用于构建Web应用的关键组件),还有对应数据库连接的依赖(如使用MySQL就添加MySQL......
  • web专题:ctf专业竞赛平台!在 Ubuntu 上部署 CTFd 与 Docker!全网最详细版本,少走弯路!
    docker是什么?Docker是一个开源的容器化平台,用于开发、发布和运行应用程序。它通过将应用程序及其依赖项打包成一个容器,使应用在任何支持Docker的环境中都能保持一致性。容器本质上是轻量级、独立的运行环境,包含了应用程序和它所需的所有资源,但与虚拟机不同的是,容器共享主机......
  • SpringBoot实现websocket服务端及客户端
    一、WebSocket通信过程客户端构建一个websocket实例,并且为它绑定一个需要连接到的服务器地址,当客户端连接服务端的候,会向服务端发送一个httpget报文,告诉服务端需要将通信协议切换到websocket,服务端收到http请求后将通信协议切换到websocket,同时发给客户端一个响应报文,返回的......
  • Web前端学习笔记三:准备开发环境
    1.安装编辑器和浏览器编辑器选择:VisualStudioCode;下载链接:VisualStudioCode-CodeEditing.Redefined 。浏览器选择:GoogleChrome网络浏览器2.下载插件汉化:chinese打开网页:openinbrowser3.设置默认浏览器控制面板——默认程序——设置默认程序——Web浏览......
  • CTF_Web笔记_RCE
    一、RCE(远程代码执行漏洞)owasp_top_10中,rce又称为os注入漏洞。在Web应用开发中为了灵活性、简洁性等会让应用调用代码执行函数或系统命令执行函数处理,若应用对用户的输入过滤不严,容易产生远程代码执行漏洞或系统命令执行漏洞。二、常见RCE漏洞函数1.系统命令执行函数syste......
  • Web3.0安全开发实践|钻石代理合约最佳安全实践
    代理合约是智能合约开发者的重要工具。如今,合约系统里已有多种代理模式和对应的使用规则。我们之前已经概述了可升级的代理合约安全最佳实践。本文我们将介绍了另一种在开发者社区颇受青睐的代理模式,即钻石代理模式。什么是钻石代理模式/合约钻石代理合约,也被称为“钻石”,是......