cookie和seesion的区别

cookie

cookie介绍

Cookie是一种在Web浏览器和Web服务器之间传递的小文件,用于存储用户的一些状态信息,如登录信息、用户偏好等。当用户访问一个网站时,网站会将一个包含Cookie信息的HTTP响应头发送给浏览器,浏览器将这些Cookie保存在用户的本地计算机上,下次用户访问该网站时,浏览器会自动将这些Cookie发送给服务器,服务器据此来识别用户。

cookie特点

  1. Cookie是存储在客户端的小文件,通常大小不超过4KB;
  2. Cookie可以通过设置过期时间来控制其有效期;
  3. Cookie可以在服务器端和客户端之间传递数据,但是数据会明文存储在客户端上,存在安全隐患;
  4. Cookie受浏览器的限制,不同浏览器对Cookie的数量和大小有不同的限制。

cookie原理

Cookie是通过设置HTTP响应头中的Set-Cookie字段来创建的,浏览器会自动将这些Cookie保存在用户的本地计算机上,并在下次用户访问该网站时将这些Cookie发送给服务器。

  1. 服务器发送Cookie
    当用户第一次访问一个网站时,服务器会在HTTP响应头中设置Set-Cookie字段,该字段包含了一个Cookie的名称、值、过期时间、作用域等信息。

  2. 浏览器保存Cookie
    浏览器收到服务器发送的Set-Cookie字段后,会将这些Cookie保存在用户的本地计算机上。浏览器根据服务器发送的Set-Cookie字段中的过期时间来决定Cookie的有效期,如果没有设置过期时间,则默认为当前会话期间。

  3. 浏览器发送Cookie
    当用户再次访问该网站时,浏览器会自动将保存在本地的Cookie发送给服务器。浏览器会在HTTP请求头中设置Cookie字段,该字段包含了所有与该网站相关的Cookie信息。

  4. 服务器处理Cookie
    服务器收到浏览器发送的Cookie后,会将其解析出来,并根据Cookie中的信息进行相应的处理。服务器可以使用Cookie来识别用户、存储用户偏好等信息。

session介绍

什么是session

Session是一种在Web应用服务器端维护用户状态的机制,用于存储用户的一些状态信息,如登录信息、购物车内容等。当用户访问一个网站时,网站会在服务器端创建一个Session,并分配一个唯一的Session ID,将这个Session ID通过Cookie等方式传递给客户端浏览器,下次用户访问该网站时,浏览器将这个Session ID带回服务器端,服务器据此来识别用户。

session特点

  1. Session是存储在服务器端的,通常会存储在内存或者数据库中,因此相对于Cookie更加安全;
  2. Session可以通过设置过期时间来控制其有效期;
  3. Session可以存储比Cookie更大的数据量;
  4. Session对客户端没有大小限制,因为只有一个Session ID存储在客户端中。
    需要注意的是,Session和Cookie都可以用于存储用户状态信息,但它们的实现方式和使用场景不同。在一些安全性要求较高的场景下,Session会更加适合。在需要跨域共享数据的场景下,Cookie会更加适合。

session原理

  1. 创建Session
    当用户第一次访问一个网站时,服务器会为该用户创建一个Session,并生成一个唯一的Session ID。Session ID可以通过Cookie等方式传递给客户端浏览器,以便下次用户访问该网站时能够自动识别该用户。

  2. Session ID传递
    服务器将Session ID传递给浏览器,通常是通过Cookie方式来传递。服务器会在HTTP响应头中设置Set-Cookie字段,该字段包含了Session ID等信息。

  3. 浏览器发送Session ID
    当用户再次访问该网站时,浏览器会自动将保存的Session ID发送给服务器。浏览器会在HTTP请求头中设置Cookie字段,该字段包含了保存的Session ID等信息。

  4. 服务器处理Session
    服务器收到浏览器发送的Session ID后,会根据Session ID来查找相应的Session。服务器可以使用Session来存储用户的登录信息、购物车内容等状态信息,以便下次用户访问该网站时能够继续使用这些状态信息。

前后端分离不推荐session的原因

  1. 分离了前后端的职责
    前后端分离的项目中,后端只负责提供API接口,不再涉及页面渲染等操作,因此不需要使用Session来维护用户的状态信息。前端通过调用后端API来获取数据,后端根据前端传递的Token进行用户身份验证,并根据Token中携带的用户信息来返回对应的数据。

  2. Session数据难以分布式管理
    在分布式系统中,多个服务器之间需要共享Session数据,需要进行相应的同步和管理。这增加了系统的复杂性和开发难度。

  3. Session容易引发跨域问题
    使用Session来维护用户状态时,需要将Session ID存储在Cookie中,但是Cookie会受到浏览器的限制,容易引发跨域问题。

  4. 增加了系统的开销
    使用Session需要在服务器端存储Session数据,增加了服务器的负担。如果是高并发系统,这些开销会更加明显。

  5. 不易扩展
    使用Session方式维护用户状态时,随着业务的增长,Session中存储的信息也会不断增加,这会导致Session数据量变大,不易扩展。
    综上所述,前后端分离的项目中,推荐使用Token来维护用户的状态信息,而不是Session。Token具有轻量级、无状态、易扩展等优点,更适合前后端分离的开发模式。

参考链接

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

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

相关文章

【linux kernel】一文总结linux输入子系统

文章目录 一、导读二、重要数据数据结构(2-1)struct input_dev(2-2)input_dev_list和input_handler_list(2-3)struct input_handler 三、input核心的初始化四、常用API五、输入设备驱动开发总结(1)查看输入…

【面试题】面试官:判断图是否有环?_数据结构复试问题 有向图是否有环

type: NODE;name: string;[x: string]: any; }; [x: string]: any;}; export type Data Node | Edge; 复制代码 * 测试数据如下const data: Data[] [ { id: ‘1’, data: { type: ‘NODE’, name: ‘节点1’ } }, { id: ‘2’, data: { type: ‘NODE’, name: ‘节点2’ } },…

指针的相关知识

1.行指针 行指针 是一个指针, 指向的元素是一维数组。 存储行地址的指针变量,叫做行指针变量。形式如下: 存储类型 数据类型 (*指针变量名)[表达式:列数] ; 例如,int a[2][4]…

【linux kernel】一文总结linux的uevent机制

文章目录 一、kobject_uevent简介二、重要数据结构1、struct kobj_uevent_env2、struct kset_uevent_ops 三、kobject_uevent_env()详细剖析1、add_uevent_var()2、kobject_uevent_net_broadcast()3、call_usermodehelper_setup()4、call_usermodehelper_exec() 四、uevent_hel…

猫头虎 AI 前沿科技探索之路(持续更新):ChatGPT/GPT-4 科研应用、论文写作、数据分析与 AI 绘图及文生视频实战全攻略

猫头虎 AI 前沿科技探索之路(持续更新):ChatGPT/GPT-4 科研应用、论文写作、数据分析与 AI 绘图及文生视频实战全攻略 背景介绍 随着人工智能技术的飞速发展,AI 的应用已经渗透到各个领域,从商业决策到医疗健康,再到日常生活中的…

猫头虎 分享已解决Error || Vanishing/Exploding Gradients: NaN values in gradients

猫头虎 分享已解决Error || Vanishing/Exploding Gradients: NaN values in gradients 🐯 摘要 📄 大家好,我是猫头虎,一名专注于人工智能领域的博主。在AI开发中,我们经常会遇到各种各样的错误,其中Vani…

心理学|社会心理学——社会心理学单科作业(中科院)

一、单选题(第1-80小题,每题0.25分,共计40分。) 1、根据霍兰德的观点,社会心理学的形成期是在( )。 分值0.5分 A、社会哲学阶段 B、哲学思辨阶段 C、经验描述阶段 D、实证分析阶段 正确答案: C、经验描述阶段 2、社会行为公式B=f(P,E)中,B指( )。 分…

React+TS 从零开始教程(3):useState

源码链接:下载 在开始今天的内容之前呢,我们需要先看一个上一节遗留的问题,就是给属性设置默认值。 我们不难发现,这个defaultProps已经被废弃了,说明官方并不推荐这样做。其实,这个写法是之前类组件的时候…

国产编程—— 仓颉

应用 仓颉编程语言是一款由华为主导设计和实现的面向全场景智能的编程语言,主要应用于以下领域: 中文字符编码和文本数据处理:仓颉编程语言充分利用汉字的结构特点来设计编码,为开发者提供了一种高效的方式来编码、存储和处理中…

Kafka基础教程

Kafka基础教程 资料来源:Apache Kafka - Introduction (tutorialspoint.com) Apache Kafka起源于LinkedIn,后来在2011年成为一个开源Apache项目,然后在2012年成为一流的Apache项目。Kafka是用Scala和Java编写的。Apache Kafka是基于发布-订…

【Python/Pytorch 】-- K-means聚类算法

文章目录 文章目录 00 写在前面01 基于Python版本的K-means代码02 X-means方法03 最小二乘法简单理解04 贝叶斯信息准则 00 写在前面 时间演变聚类算法:将时间演变聚类算法用在去噪上,基本思想是,具有相似信号演化的体素具有相似的模型参数…

推荐一款AI修图工具,支持AI去水印,AI重绘,AI抠图...

不知道大家有没有这样的一个痛点,发现了一张不错的“素材”, 但是有水印,因此不能采用,但找来找去,还是觉得初见的那个素材不错,怎么办? 自己先办法呗。 二师兄发现了一款功能强大的AI修图工具…

使用Jetpack Compose为Android App创建自定义页面指示器

使用Jetpack Compose为Android App创建自定义页面指示器 在现代移动应用中,页面指示器在提供视觉导航提示方面发挥着重要作用,帮助用户理解其在应用内容中的当前位置。页面指示器特别适用于顺序展示内容的场景,如图片轮播、图像库、幻灯片放…

【Linux】Socket阻塞和非阻塞、同步与异步

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;Linux系列专栏&#xff1a;Linux基础 &#x1f525; 给大家…

java项目生成的api文档

生成Java项目API文档的方法 在进行Java项目开发时&#xff0c;编写良好的API文档对于团队合作和后续维护非常重要。生成API文档不仅可以提高团队协作效率&#xff0c;还可以方便其他开发人员了解项目结构和接口调用方式。在本文中&#xff0c;我们将介绍如何通过Java工具生成A…

WPF与Winform,你的选择是?

概述 在桌面应用的发展历程中&#xff0c;Winform和WPF作为微软推出的两大框架&#xff0c;各自承载着不同的设计理念和技术特色。Winform以其稳定、成熟的技术基础&#xff0c;长期占据着企业级应用开发的重要地位。而WPF&#xff0c;作为后来者&#xff0c;以其现代化的UI设计…

【ajax核心02】底层原理-Promise对象

目录 一&#xff1a;promise对象是什么 二&#xff1a;语法&#xff08;Promise使用步骤&#xff09; 三&#xff1a;Promise-三种状态 一&#xff1a;promise对象是什么 Promise 对象代表异步操作最终的完成&#xff08;或失败&#xff09;以及其结果值。 即Promise对象是…

CentOS7系统的软件源更改为阿里云源-3

要将您的CentOS系统的软件源更改为阿里云源&#xff0c;您可以按照以下步骤操作&#xff1a; 打开终端。 首先&#xff0c;备份原始的 CentOS-Base.repo 文件&#xff0c;以防出现问题时可以恢复&#xff1a; sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/Cen…

SAP系统中的总账会计(知识点总结)

总账会计 财务报表的组织结构 Company Code: 公司代码&#xff0c;an independent accounting entity&#xff0c; 一个独立的会计实体, 存储的数据为 T001。针对同一个公司代码会有Parallel Financial Reporting&#xff08;平行帐&#xff09;的要求&#xff0c;为了实现平…

基于springboot的图书管理系统源码数据库

当下&#xff0c;正处于信息化的时代&#xff0c;许多行业顺应时代的变化&#xff0c;结合使用计算机技术向数字化、信息化建设迈进。传统的图书管理信息管理模式&#xff0c;采用人工登记的方式保存相关数据&#xff0c;这种以人力为主的管理模式已然落后。本人结合使用主流的…