[网络原理] 详解Cookie与Session

news2024/11/24 7:48:32

做好准备,迎接所有的成功吧

文章目录

  • 1. Cookie的概念
  • 2. Session的概念
  • 3. Cookie与Session的关联与区别
    • 3.1 关联
    • 3.2 区别
  • 4. Cookie与Session中的核心方法



1. Cookie的概念

Cookie是用户首次登陆网站成功之后,对应页面的服务器会返回给用户一个身份标识,被保存在用户主机的硬盘中.
在之后发给服务器的请求中,这个Cookie会写在请求的Header中,这样,服务器就可以知道是哪位用户,以及用户请求的是哪个服务.
如下图,是客户端向bilibili服务器发起的一次请求,Header中最后一行为用户的Cookie.
在这里插入图片描述

2. Session的概念

用户首次登录网站或者手机app,对应商家的服务器会保存用户的身份信息,并且会给这个用户分配一个SessionId进行身份标识(这个ID可以是数字或者字符串),这个ID是唯一的.服务器会把身份信息与Session作为一对键值对以Hash的形式存储.
用户下次登陆时,服务器会根据用户的SessionId,来找到用户身份信息,判断是否用户信息是否正确.

3. Cookie与Session的关联与区别

3.1 关联

在登陆网站时,需要二者配合使用,如下图,是登录bilibili网站的过程.登陆时,需要先给用户分配一个SessionId,在之后的请求中,会在Cookie里写入身份信息.
在这里插入图片描述

3.2 区别

  1. Session是服务器的存储机制,服务器将SessionId和对应的身份信息保存在数据库里.而Cookie是客户端的存储机制,存储在用户主机硬盘中.
  2. Cookie可以单独使用,Cookie与浏览器强相关,当某些网站不需要登录,就不需要Session.
  3. Session可以单独使用,当使用手机上需要登陆的app,就不需要搭配Cookie使用.
  4. Cookie属于Http协议中的一部分,而Session与Http无关.
  5. Session专门用来存储用户的身份信息,而Cookie可以存储其他信息.

4. Cookie与Session中的核心方法

下面这个方法是在查询用户的登陆状态,看session是否为空,若为空,则为用户创建一个HttpSession对象,构造唯一的SessionId,插入哈希表,存进数据库.

HttpSession session = req.getSession(true);

下面这个方法,是用户登录,查询session为空时,不会自动创建Session会话,而是自动跳转到登陆页面.

		HttpSession session = req.getSession(false);
        if (session == null) {
            // 未登录状态
            System.out.println("用户未登录!");
            resp.sendRedirect("login.html");
            return;
        }

session.getAttribute(),是添加用户身份信息的方法,.如下图所示,键值对中,Session唯一,但对应的value不唯一,可以存姓名,年龄等多个信息.

String username = (String) session.getAttribute("username");

在这里插入图片描述
下面这个方法,可以查看Cookie中的所有键值对.

Cookie[]  = session.getCookies();

本文完

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/457088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无人机视频与GIS融合三维实景怎么实现?

无人机视频与GIS融合三维实景怎么实现?无人机三维GIS作为一项新兴的测绘重要手段,具有续航时间长、成本低、机动灵活等优点,为城市的规划建设带来极大便利。 那么此项技术有什么样的特点呢?下面智汇云舟就带大家一起来了解一下。 三维是将采集以及经运…

leetcode 1416. Restore The Array(恢复数组)

一台打印机没有把空格打印出来,以至于不知道打印出的 s 中到底有哪些数字。 现在知道数字的取值范围在1 ~ k, 数字开头不能是0. 返回可能的数字个数。取模1097. 思路: DP 假设dp[ i ]为 i ~ n位的s 所能组成的数字组合数。 从右到左遍历,…

【云原生进阶之容器】第六章容器网络6.7.1--阿里云Terway网络模式综述

《云原生进阶之容器》专题索引: 第一章Docker核心技术1.1节——Docker综述第一章Docker核心技术1.2节——Linux容器LXC第一章Docker核心技术1.3节——命名空间Namespace第一章Docker核心技术1.4节——chroot技术第一章Docker核心技术1.5.1节——cgroup综述

如何在在一个账户内管理多个WhatsApp号

许多企业拥有多个WhatsApp Business账户。这可能是因为他们在多个地点都有商店,或者可能在全球范围内都有客户,并希望用当地语言迎合他们每个人。 无论出于何种原因,管理多个WhatsApp企业帐户既耗时又困难。但是,如果我们说有一种…

LoadRunner参数化最佳实践:让你的性能测试更加出色!

距离上次使用loadrunnr 已经有一年多的时间了。初做测试时在项目中用过,后面项目中用不到,自己把重点放在了工具之外的东西上,认为性能测试不仅仅是会用工具,最近又想有一把好的利器毕竟可以帮助自己更好的完成性能测试工作。这算…

【AI实战】微小目标检测模型MMDet-RFLA--训练环境从零开始搭建

【AI实战】微小目标检测模型MMDet-RFLA--训练环境搭建 RFLA介绍环境搭建安装依赖参考 RFLA介绍 官方连接 https://github.com/Chasel-Tsui/mmdet-rflaarxiv https://arxiv.org/abs/2208.08738 环境搭建 我的机器的cuda是10.2,根据自己的cuda版本到 https://hub.do…

python使用KDDockWidget

编译原理:KDDockWidget是一个C库,通过shiboken转成python的绑定支持。针对特殊版本,需要在cmake文件中增加一些变量。 注:本次编译,Qt版本统一指定为6.4.2,库支持Qt>5.12或6.2.0以上版本 下载仓库 Git…

解决npm安装慢卡顿reify:ajv: timing reifyNode问题、报错require() of ES Module

网上方法众多,但是都没有具体说明原因和具体解决办法 镜像优先推荐:cnpm 和 taobao 文章目录: 第一个错:Error [ERR_REQUIRE_ESM]: require() of ES Module 1.来源 2.错误显示 3.问题解决 第二个错: 卡顿在reify:…

(原创)Flutter基础入门:手把手教你搭建Flutter混合项目

前言 Flutter是Google开源的构建用户界面(UI)工具包 支持在不同平台构建一致的ui效果 但在实际业务中,一般不会整个APP都用纯Flutter开发 尤其一些老的项目,会采用接入Flutter的方式来混合开发 那么今天就主要讲一下如何搭建一个…

0424作业

实现串口收发字符/字符串 uart4.c #include "uart4.h"void hal_uart_init() {//rcc初始化//使能CPIOB组控制器RCC->MP_AHB4ENSETR | (0x1 << 1);//使能CPIOG组控制器RCC->MP_AHB4ENSETR | (0x1 << 6);//使能UART4控制器RCC->MP_APB1ENSETR | …

Linux网路服务之PXE网络批量装机和Kickstart全自动化安装

文章目录 一 、PXE网络批量装机的简介和相关知识1.1 什么是PXE1.2搭建PXE 远程安装服务器1.3 PXE装机的过程描述 二、PXE批量安装的具体操作过程2.1安装并启用 TFTP 服务2.2安装并启用 DHCP 服务2.3准备 Linux 内核、初始化镜像文件2.4准备 PXE 引导程序2.5安装FTP服务&#xf…

Android分屏流程分析

本文基于Android 11。 SystemUI模块中的Divider管理着所有关于分屏的对象&#xff1a; DividerView&#xff08;分屏分割线&#xff0c;分屏显示界面&#xff09;SplitScreenTaskOrganizer&#xff08;分屏Task组织者&#xff0c;分屏逻辑&#xff09; 这里重点关注分屏逻辑…

有道CEO周枫:当我们谈论大模型时,应该关注哪些新能力?

作者&#xff1a;周枫 基于大语言模型技术的ChatGPT推出已经有4个月了&#xff0c;更多同类产品还在快速出现。比如&#xff0c;前天谷歌更新了Bard&#xff0c;将辅助编程能力支持的语言数量扩展到20种。 然而&#xff0c;对大模型技术的重要性也出现了质疑&#xff0c;前段…

开发框架之Furion

目录 概述 框架特点 功能模块 支持平台 运行环境 数据库 应用部署 Nuget框架扩展包 Nuget框架脚手架 FurionEFCore脚手架 FurionEFCore脚手架安装命令 FurionSqlSugar脚手架 FurionSqlSugar脚手架安装命令 使用脚手架 脚手架更新 概述 Furion是一个免费开源的.Ne…

【AI帮我写代码,上班摸鱼不是梦】调教ChatGPT过程全记录,让它帮我写程序!

最近发现磁盘空间严重不足&#xff0c;都弹窗提示我了&#xff1a; 想想看到底哪个文件夹占的空间比较大&#xff0c;好做针对性的删除和清理。奈何Windows系统没有查看文件夹大小的工具&#xff0c;只能鼠标放在某个文件夹上&#xff0c;等提示&#xff1a; AI时代都来临了&am…

PCL 点云变换

文章目录 一、原理简述1、旋转矩阵2、欧氏变换二、主要函数及代码实现1、主要函数2、完整代码3、效果实现参考文献:一、原理简述 两片点云的刚体变换包含旋转和平移,变换矩阵的含义如下: 1、旋转矩阵 绕 x x

Promise异步编程

目录 一、Promise的含义 二、基本用法 三、reject的用法 四、执行顺序 五、 项目中使用promise获取后端数据 六、catch的用法 七、finally的用法 八、Promise.all() 九、Promise.all()有一个是失败 十、Promise.race()全部是成功 十一、Promise.race()有一个是失败 一、…

Java——二叉树中和为某一值的路径(二)

题目链接 牛客网在线oj题——二叉树中和为某一值的路径&#xff08;二&#xff09; 题目描述 输入一颗二叉树的根节点root和一个整数expectNumber&#xff0c;找出二叉树中结点值的和为expectNumber的所有路径。 1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过…

图的相关知识总结

目录 图的概念图的存储结构邻接矩阵邻接表 图的遍历最小生成树Kruskal算法prim算法 最短路径问题单源最短路径--Dijkstra算法-单源最短路径--Bellman-Ford算法多源最短路径--Floyd-Warshall算法 图的概念 图是有顶点集合以及顶点间的关系组成的一种数据结构:G(V,E),其中顶点集…

JS-11A/224时间继电器 JOSEF约瑟 板前、板后接线

系列型号&#xff1a; JS-11A/11集成电路时间继电器&#xff1b;JS-11A/12集成电路时间继电器&#xff1b; JS-11A/13集成电路时间继电器&#xff1b;JS-11A/136集成电路时间继电器&#xff1b; JS-11A/137集成电路时间继电器&#xff1b;JS-11A/22集成电路时间继电器&#…