当前位置: 首页 > article >正文

Cookie与Session详解与应用

White graces:个人主页

🙉专栏推荐:Java入门知识🙉

🐹今日诗词:青山一道同云雨,明月何曾是两乡🐹


目录

Cookie和Session

伪造Cookie

获取Cookie数据

传统方法获取Cookie​编辑

使用注解获取Cookie

设置Session

简介获取Session信息

响应

访问静态页面

访问动态页面

@RestController和@Controller的区别

绝对路径和相对路径

@ResponseBody注解

返回HTML片段

返回Json数据

设置状态码

@RequestMapping注解(重点)

设置Content-Type

设置header

美图分享


⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏

⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏


Cookie和Session

HTTP协议是无状态的, 服务器不能持续跟踪用户的请求状态

无状态: 每次请求都是独立的, 相互之间没有任何影响, 就是做那种事之后就翻脸不认人,你是谁, 我们认识吗, 我有npy了.

为了弥补这一缺陷, Cookie和Session就被引入了, 用于帮助服务器跟踪用户状态, 管理用户信息, 身份验证, 会话数据

Cookie是存在客户端的小型文本文件

Session是存在服务器

Cookie用于保存用户信息. 服务器将数据发送给浏览器, 浏览器会将这些数据保存下来并在之后的请求中自动发送回服务器. Cookie 是帮助服务器识别用户和保存用户偏好的一种方式

Session用于存储用户的会话数据,服务器为每个用户创建一个唯一的会话, 并在服务器端存储与该会话相关的信息. 浏览器只保存一个唯一的会话标识符(Session ID),  服务器通过该 ID 来识别和检索对应的会话数据

Cookie和Session数据的特点

Cookie 数据特点:

  • 存储位置:客户端
  • 长期有效:可设置过期时间
  • 安全性较低: 一般存储一些不敏感, 安全性较低的数据, 因此容易被篡改攻击
  • 存储信息类型: 如用户登录状态、偏好设置、网站主题、语言选择等

Session数据特点

  • 存储位置:服务器端
  • 持久性:短期有效
  • 安全性较高
  • 存储信息类型: Session 适合存储用户的敏感数据和复杂的状态信息,如用户身份、购物车信息、权限等。因为数据保存在服务器上,客户端无法直接访问这些信息

伪造Cookie

客户端的安全性不能说是十全十美, 只能说是聊胜于无(通辽语法), 因此十分容易伪造

方法1: Postman伪造

方法2: 通过浏览器伪造

通过Fiddler抓包查看Cookie数据文件

获取Cookie数据

获取Cookie数据有两个接口非常重要, 分别是HttpServletRequest, HttpServletResponse

HttpServletRequest: 接口方法可以获取Http请求的数据

HttpServletResponse: 接口方法可以获取Http响应的数据

传统方法获取Cookie

代码怎么写呢?

获取指定Key对应的Value值

使用注解获取Cookie

获取Cookie也可以通过@CookieValue注解获取Cookie数据的value值

@CookieValue: 从Cookie中获取指定数据的值

设置Session

设置Session一般通过HttpSession接口设置的

首先第一次连接服务器, 服务器会创建一个Session, 不然没有获取个蛋

有了SessionId之后, 后续客户端所有的请求都会带上Cookie

获取Session

也是通过HttpSession接口获取

执行, 发现日志啥也没有

解决办法: 先设置Session, 后面才能获取Session

简介获取Session信息

前面获取信息要写很多接口, 非常麻烦, 所以简介获取Session信息的方式应运而生

不仅如此还能简单获取Session中, "指定"的信息

方法: 通过@SessionAttribute注解

获取header

两种方式获取header, 这里以获取User-Agent为例

User-Agent: 用来标识客户端应用程序、操作系统、设备等信息

响应

访问静态页面

访问静态页面很简单, 只要知道文件在服务器的具体位置就能够访问了

那么如何通过项目访问静态页面呢?

访问动态页面

访问动态页面是通过控制器方法的方式访问页面, 静态访问是通过文件在服务器的地址访问的

@RestController和@Controller的区别

@Controller: 默认返回视图

@RestController: 默认返回数据

绝对路径和相对路径


避免出错, 建议统一使用绝对路径, 加斜杠的

@ResponseBody注解

这个注解既是类注解, 也是方法注解

加在类上, 表示该类下所有方法都返回 数据

加在方法上, 表示该方法返回 数据

返回HTML片段

返回HTML片段, 不是完整的HTML文件, 部分语句而已

返回Json数据

设置状态码

状态码是包含在响应里面, 因此我们可以通过HttpServletResponse接口方法设置状态码


@RequestMapping注解(重点)

这个注解使用频率分非常高, 下面是它的源码: 

  • value: 指定映射的URL
  • method:指定请求的method类型,如GET,POST等
  • Params:指定request中必须包含某些参数值时,才让该⽅法处理
  • headers: 指定request中必须包含某些指定的header值,才能让该⽅法处理请求
  • consumes:指定处理请求(request)的提交内容类型(Content-Type),例如application/json, text/html;
  • produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回

设置Content-Type

我们通过设置produces属性的值,设置响应的报头Content-Type

设置header

header在响应里, 因此可以通过HttpServletResponse接口方法设置

美图分享

✨🎆谢谢你的阅读和耐心!祝愿你在编程的道路上取得更多的成功与喜悦!"🎆✨🎄

⭐️点赞收藏加关注,学习知识不迷路⭐️

🎉✔️💪🎉✔️💪🎉✔️💪🎉✔️💪🎉

👍😏⛳️点赞☀️收藏⭐️关注😏👍

👍😏⛳️点赞☀️收藏⭐️关注😏👍

👍😏⛳️点赞☀️收藏⭐️关注😏👍

🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️


http://www.kler.cn/news/362952.html

相关文章:

  • 【YOLO模型】(1)--YOLO是什么
  • HttpOnly Cookie
  • 【国潮来袭】华为原生鸿蒙 HarmonyOS NEXT(5.0)正式发布:鸿蒙诞生以来最大升级,碰一碰、小艺圈选重磅上线
  • pdf编辑软件有哪些?方便好用的pdf编辑软件分享
  • RK3576 安卓SDK编译环境搭建
  • 物理海洋随学笔记(一)
  • LangGraph 源码分析 | 结构化输出
  • Umi UI报错:连接失败,请尝试重启dev服务
  • 从一个简单的计算问题,看国内几个大语言模型推理逻辑能力
  • 市面上什么台灯性价比高?五款超强实力护眼台灯测评推荐!
  • SVN小乌龟 create patch 和 apply patch 功能
  • 基于Multisim的水温控制电路设计与仿真
  • 51单片机应用——直流电机PWM调速
  • TikTok营销实用技巧与数据分析工具:视频洞察
  • konvajs -基础图形-标签-箭头,动画,学习笔记
  • GORM框架中的预加载功能Preload详解
  • Java智慧工地管理平台SaaS源码:打造安全、高效、绿色、智能的建筑施工新生态
  • 如何在PyCharm中安全地设置和使用API Key
  • 开源项目 - yolo v5 物体检测 手检测 深度学习
  • vue使用xlsx以及file-saver进行下载xlsx文件以及Unit8Array、ArrayBuffer、charCodeAt的使用
  • C# 简单排序方法
  • VS 插入跟踪点,依赖断点,临时断点的区别
  • Linux中vim的三种主要模式和具体用法
  • SpringBootWeb请求响应
  • ReactOS系统中搜索给定长度的空间地址区间中的二叉树
  • 外呼机器人的功能特点