基础网络详解4--HTTP CookieSession 思考

一、cookie技术思考

    一台多用户浏览器发起了三笔请求,将某款产品放入购物车中,A一次,选择了篮球;B两次,第一次选了足球,第二次选了钢笔。如何确认选择篮球、足球、钢笔的请求属于谁呢?如果不确认属于谁,请求将没有意义。
    如果每次请求都带一个用户标识,比如用户名,这样服务器就会知道该请求属于谁,也会知道请求的商品属于谁,也就知道了该如何记录。于是cookie诞生了,使得无状态的http服务,变成了有状态的http服务。

1、加入购物车需要验证密码或者登陆状态吗?

    我们先来看不需要的情况,因为用户名是很容易获取到的,如果别人获取了你的用户名,他们也可以在你的购物车中添加东西,这样来看是很不安全的。所以验证密码或者验证登陆状态时有必要的。
    需要验证密码。如果采用验证密码的方案,就需要在cookie中携带密码,这是很不安全的,并且在每次请求的时候都要验证一下密码是否正确,这样会降低处理效率。 那选另一种方案验证登陆状态呢?

2、如何确保登陆状态的唯一性。

    当客户登陆的时候我们可以在服务器的内存或者文件中存储客户登陆的状态,比如用户名和过期时间等,但是只存储这些同样是不安全的,因为其他用户会很轻松的获取你的用户(因为用户是有规律的),所以就需要确保登陆状态的唯一性,于是seesion诞生了。

二、session技术思考

    当客户登陆的时候,服务端会生成一个session,该session有一个全局唯一的sessionid,并且该sessionid会存储客户的相关信息,登陆状态,以及过期时间,并会将sessionid设置在cookie中,并返回给客户端。这样客户每次发起请求的时候都会带着该sessionid, 该sessionid可以使http服务变成有状态的,并且保证了唯一性和确保登陆状态,sessionid很难被其他用户获取。
    从上述来看session机制是依赖cookie的,如果禁用cookie,session的作用就失去了大半,虽然可以把sessionid放在请求的头部,但是这样会不方便。
java服务器中的sessionid JSESSIONID=xxxxxxxxxxxx
PHP服务器中的PHPSESSIONID=xxxxxxxxxxxxxxxxxxxxxx

三、两者的区别

1、存储位置

cookie存储在客户端、最大为4kb,网站的免密登陆就是在cookie里面存储密码;
session存储在服务器端,大小没限制,作用域可以共享;

2、大小限制

cookie的大小有限制,最大为4kb;
session大小没限制;

3、作用域

cookie由于浏览器的同源策略,只有同源的情况下才会发送;
session在服务端理论上可以进行多域共享

一般来说,cookie与session是相辅相成,是http服务器认证中的两个部分,是同一种技术中的两部分,两者并没有区别之分。

四、session的限制

当用户越来越多,seesion也会越来越多,会增加服务器的负担, 并且扩展性低,在微服务架构中,因为seesion只存在一台服务器上,如何确保所有的服务都能访问到该session呢?

1、session复制

2、session粘连

当session在机器A生成之后,之后所有的请求都会到机器A

3、seesion共享

可以将seesion存储在redis中,这样服务就都可以访问到。

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

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

相关文章

贝锐蒲公英助力建设工程咨询企业,高效安全远程访问数据档案库

随着数字信息化进程的加深,数字化转型已成为企业实现业务流程自动化、提高工作效率、降低成本和提高用户满意度的重要手段。其中,档案工作的标准化、规范化是信息化建设的前提和必要条件,对于建设工程咨询企业而言,一个完善的数字…

服务器感染了.360勒索病毒,如何确保数据文件完整恢复?

引言: 随着科技的不断进步,互联网的普及以及数字化生活的发展,网络安全问题也逐渐成为一个全球性的难题。其中,勒索病毒作为一种危害性极高的恶意软件,在近年来频频袭扰用户。本文91数据恢复将重点介绍 360 勒索病毒&a…

【Java 数据转换】double类型的数据,返回数值是NAN(119)

说明&#xff1a; double类型的数据当分母的数值趋近0的时候&#xff0c;返回来的数值就是一个NAN: 使用如下&#xff1a; for (int i 0; i < numberList.size(); i) {double fenzi Double.parseDouble(numberList.get(i));int fenMu Integer.valueOf(countList.get(i));…

使用vscode编写插件-php语言

https://blog.csdn.net/qq_45701130/article/details/125206645 一、环境搭建 1、安装 Visual Studio Code 2、安装 Node.js 3、安装 Git 4、安装生产插件代码的工具&#xff1a;npm install -g yo generator-code 二、创建工程 yo code 选择项解释&#xff1a; 选择编写扩…

js中的正则表达式(一)

目录 1.什么是正则表达式 2.正则表达式在JavaScript中的使用场景: 3.正则表达式的语法&#xff1a; 1.什么是正则表达式 正则表达式(Regular Expression&#xff09;是用于匹配字符串中字符组合的模式。在JavaScript中&#xff0c;正则表达式也是对象通常用来查找、替换那些符…

解锁高效存储管理:OpenStack Cinder与NFS的完美结合

文章目录 OpenStack Cinder 对接 NFS 后端存储准备好磁盘配置NFS服务安装NFS启动NFS服务关闭防火墙及SELinux创建共享目录修改配置文件重启服务客户端测试挂载 控制节点配置NFS共享创建文件并配置修改文件权限 创建新的后端定义增加NFS后端定义增加NFS后端参数重启卷服务 创建云…

Lua中逻辑运算符and,or,not 区别与用法

在Lua中&#xff0c;逻辑运算符包括 and、or 和 not。它们用于对布尔值进行逻辑运算。 and运算符&#xff1a; 当同时满足两个表达式时&#xff0c;返回第二个表达式的值&#xff1b;否则&#xff0c;返回第一个表达式的值。如果第一个表 达式的值为false或nil&#xff0c;则…

YOLOX在启智AI GPU/CPU平台部署笔记

文章目录 1. 概述2. 部署2.1 拉取YOLOX源码2.2 拉取模型文件yolox_s.pth2.3 安装依赖包2.4 安装yolox2.5 测试运行2.6 运行报错处理2.6.1 ImportError: libGL.so.1: cannot open shared object file: No such file or directory2.6.2 ImportError: libgthread-2.0.so.0: cannot…

MySQL 字符集概念、原理及如何配置 — 图文详解

目录 一、字符集概念 1、字符&#xff08;Character&#xff09; 2、字符编码 3、字符集&#xff08;Character set&#xff09; 二、字符集原理 1. ASCII字符集 2、GB2312 3、GBK 4、GB18030 5、BIG5 6、Unicode 编码 三、字符序 四、MySQL字符集 & 字符序 …

Linux命令200例:tar命令主要用于创建、查看和提取归档文件(常用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…

CTFhub-sql-整数注入

判断存在 sqli 注入 1 1 and 11 1 and 12 因为 11 为真&#xff0c;12 为假&#xff0c;且 11 与 1 显示的数据一样&#xff0c;那么就存在 sqli 注入 查询该数据表的字段数量 一、 2 3 1,2成功带出数据&#xff0c;3没有数据&#xff0c;所以有两个字段 二、 1 order by …

JAMstack架构:快速构建安全、高性能的现代应用

随着Web应用的快速发展&#xff0c;开发者们在寻找更加高效、安全和可维护的应用架构。JAMstack架构应运而生&#xff0c;它通过将前端、后端和部署过程分离&#xff0c;提供了一种现代化的方式来构建Web应用。在本文中&#xff0c;我们将深入探讨JAMstack架构的特点、优势以及…

【已解决】Please install Node.js and npm before continuing installation.

给juopyter lab安装插件时报这个错 原因是&#xff0c;conda本身有nodejs&#xff0c;但是版本很低&#xff0c;只有0.几 所以需要卸载掉原来的nodejs&#xff0c;重新安装10版本以上的nodejs # 卸载命令 pip uninstall nodejs # 安装命令 conda install nodejs14.7.0 -c cond…

蓝蓝设计-ui设计公司-界面设计案例作品

泛亚高科-光伏电站控制系统界面设计 html前端 | 交互设计 | 视觉设计 | 图标设计 泛亚高科(北京)科技有限公司&#xff08;以下简称“泛亚高科”&#xff09;&#xff0c;一个以实时监控、高精度数值计算为基础的科技公司&#xff0c; 自成立以来&#xff0c;组成了以博士、硕…

分布式搜索引擎----elasticsearch

目录 1、初识elasticsearch 1.1、什么是elasticsearch 1.2.ELK技术栈 2、正向索引和倒排索引 2.1、正向索引 2.2、倒排索引 2.3、正向索引和倒排索引的区别 3、elasticsearch中的概念理解 3.1、文档和字段 3.2、索引和映射 3.3、mysql与elasticsearch 1、初识elasti…

为什么选择elasticsearch分布式搜索引擎

文章目录 &#x1f52d;什么是elasticsearch&#x1f320;ELK技术栈&#x1f320;elasticsearch和lucene&#x1f320;为什么不是其他搜索技术&#xff1f; &#x1f52d;总结 &#x1f52d;什么是elasticsearch elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常…

TCP机制-延迟应答,捎带应答

在看本篇博客前推荐先看TCP中窗口和滑动窗口的含义以及流量控制 延迟应答和捎带应答都是TCP用于提高网络传输效率的机制 延迟应答 当发送端发送数据给接收端了以后&#xff0c;按道理接收端的内核会立即返回ACK&#xff08;应答报文&#xff09;给发送端&#xff0c;而且ACK&a…

SQL有关表的左连接,右连接,以及内连接

首先我们需要想一下&#xff0c;我们为什么需要将表连接在一起呢&#xff1f;换种说法&#xff0c;即我们需要查询的数据不在同一张表里面&#xff0c;而是在A表中查出一部分&#xff0c;然后再去B表中查出一部分&#xff0c;然后两者结合在一起&#xff0c;才是我们需要的部分…

StringIndexOutOfBoundsException: String index out of range: 458

报错信息&#xff1a; org.springframework.dao.TransientDataAccessResourceException: ### Error updating database. Cause: java.sql.SQLException: java.lang.StringIndexOutOfBoundsException: String index out of range: 458 ... ... ... 问题原因&#xff1a; <i…