首页 > 其他分享 >Cookie和Sessio

Cookie和Sessio

时间:2024-08-14 17:28:17浏览次数:11  
标签:浏览器 Session 访问 session Cookie Sessio 服务端

Cookie是什么?

        Cookie是保存在客户端的,是浏览器向服务端发送请求时,会携带Cookie信息,将Cookie发送至服务端。

        一个浏览器访问多个不同的服务端,而请求每一个服务端时,可以携带多个Cookie

        Cookie组成是由key 和 value组成的,key存放的是该Cookie的名字,而value是存放的是值

为什么要使用Cookie?

        多个不同的浏览器访问客户端时,服务端是如何判断并准确返回给对方想要的数据呢?比如我们俩同时操作百度,那么你是搜索问题,而我在点击某个链接进行查看,那么此时服务器就会接收到两条请求,那么服务端是如何判断哪条是你的哪条是我的呢?

        而Cookie的作用就是浏览器向客户端发送请求时,会携带一个或多个Cookie,而服务端就是通过Cookie来判断对方是谁,并给对方判断相对应的响应

Cookie的运行原理图:

Cookie的使用方法及细节

        Cookie是先由客户端创建,创建后发送给浏览器并让浏览器进行保存,如果没有发送给浏览器,那么浏览器上就不会存在

        

Cookie的生命周期:        

        Cookie可以设置其存在时间,如果不设置,则默认为-1,也就是关闭当前会话,则浏览器会把Cookie销毁,也可以设置其时间,在该时间内Cookie会一直存在

        Cookie的生命周期是:浏览器访问设置了cookie时间的servlet开始算起

        Cookie的生命周期结束的特征:浏览器访问服务端时不再带有已结束的Cookie。但此刻的浏览器里该Cookie有可能还存在,那是因为浏览器会存在缓存

        

 Cookie的有效路径:

        因浏览器会存在很多的Cookie,而我们都知道访问服务端时,其服务端就是多个servlet,那么我们在访问不同的servlt,其访问路径是不同的,因servlt存放的位置也是不同的。

        那么再碰到浏览器存在很多Cookie,而我们访问某一个servlet只想携带某个Cookie时,怎么处理?解决方法就是Cookie路径        

        Cookie的path属性,可以有效过滤哪些Cookie发送给服务端,哪些不发?怎么过滤呢?

        假设我们现在有A、B两个Cookie,那么我给A设置路径是:http://localhost:8080/cs

        B设置的是:http://localhost:8080/cs/aaa

        那么当我请求http://localhost:8080/cs/xx1时:A会发送给浏览器,B不会发送

        而我请求的是:http://localhost:8080/cs/aaa/xx1:A,B都会发送给客户端

简单来讲就是:有没有包含的关闭,向服务端发送的请求链接如果包含了A或者B的路径,就会发送

Cookie的使用细节:

1.一个Cookie只能标识一种信息

2.Cookie没有总数量,但是每个域名的Cookie数量和每个Cookie的大小是由限制的

Session

Session是什么?

        1、session是服务端为每一个用户访问的浏览器创立的一个独立空间,可以理解为Session集合

        2、每一个session都有一个独立的空间,也是一个session可以存放多条数据

        3、假设A,B同时访问一个servlet,那么Tomcat就会给A和B分别创立一个Session,让A和B可以存放很多条数据        

为什么要使用Session?

        想象一下你现在逛淘宝,跳转到不同页面时,都会携带你的账号,比如你打开购物车,添加的商品就再里面,包括你搜索时,会有搜索记录,那么系统是怎么知道的呢?

        因为数据存放在数据库可以通过数据库查找,但数据库存放的数据那么多,系统是如何判断出哪个数据是属于是你的呢?

        用Cookie的解决问题,那Cookie只能放一些小的东西,且因Cookie是保存在浏览器,那么比如你登录某网站的账号和密码,比如在网吧,你想让下一个人也可以登录吗?

        那么Session就可以解决这种问题,Session是存放在服务端。

        session也可以解决购物车等问题

你可以理解为Tomcat内有一个类似HashMap的集合<K, V>,k存放的是浏览器Cookie中的JSessionID,而V则是httpSession,其中每一个session,又相当于一个集合,其中存放的是String类型,和Object。每一个Session是可以存放多个数据的

        

Session的运行逻辑:

        1、当浏览器发出请求时,tomcat 会判断有没有携带 JSessionId,如果没有,则Tomcat会创建一个session,并分配一个JSessionId,并将其发送给浏览器让其保存

        2、当浏览器发送请求并携带JSessonId时,Tomcat会先查找,有没有该JSessonId:

                (1)如果已经存在了则进行操作

                (2)如果没有则重新创建session,并分配JSessionId,将其发送给浏览器

        

Session使用细节及注意事项:

1、如果设置Session的生命周期时间到了,那么Tomcat会在自己维护的SessionMap中删除该JSessionId的信息,但浏览器会依旧保存,但下次如果浏览器访问该服务器时:
   浏览器会带有之前的JSessionId,但Tomcat会在自己的SessionMap中查找该session,如果不存在则重新创建并返回新的session

2、一个浏览器多个页面访问同一个服务器时,不管有多少个页面,只会存在一个session

3、浏览器访问A servlet, A设置了60s的session生命周期, 只要是该浏览器访问该Tomcat下的所有servlet,那么session生命周期都会是60s。
  原因是:session其是被tomcat维护在集合当中,那么一个浏览器又只会有一个session,那么其本质就是同一个只不过是很多人操作,A给对方操作添加的, B这边同样会显示出来。
        保存机制:和java中类属性类似,也可以理解为:甲乙两个人共同拥有一个鱼池,只不过有a,b两个不同口,无论甲在进行放水或者注水,鱼池的水位都会发生变动,B也会感觉到

4、但如果是首先浏览器访问该B servlet,其没有设置生命周期,那么其session的生命周期就是默认的30分钟而不会是60s,除了又访问了设置生命周期的servlet

5、session生命周期是指:客户端访问服务器两次之间的间隔时间称之为session生命周期

标签:浏览器,Session,访问,session,Cookie,Sessio,服务端
From: https://blog.csdn.net/Dwwer/article/details/141006089

相关文章

  • XSS盲打与cookie劫持
    目录【学习目标、重难点知识】【学习目标】【重难点知识】XSS盲打(加载远程攻击payload)XSS偷cookiecookie收集在线XSS收集平台的使用1.BeeF框架的使用BeeF简介安装和使用XSS一些实战应用1.XSSPDF2.公网投毒3.网站挂马XSS防御HttpOnly输入检查输出检查......
  • Session的工作原理、Session与Token的区别
    Session是一种在无状态的HTTP协议中用来实现用户状态管理的机制。它通过在服务器端保存用户的状态信息,并通过客户端在每次请求时传递一个唯一的标识符(通常称为SessionID),实现了在多个请求之间维持用户的会话状态。一、Session的工作原理:客户端发送请求:用户首次访问网站......
  • Cookie、localStorage 和 sessionStorage 的区别及应用实例
    在前端开发中,持久化数据存储是一个非常常见的需求。为了实现这一点,浏览器提供了多种方式,包括Cookie、localStorage和sessionStorage。这三者各有优劣,适用于不同的场景1.CookieCookie是浏览器存储少量数据的一种机制,通常由服务器生成并发送到客户端。每次客户端向同一域名发......
  • Java网络编程——Cookie & Session
    cookie前面我们学习Okhttp3库可以调用API、抓取网页、下载文件。但是这些操作都是不要求登录的,如果API、网页、文件等内容要求登录才能访问,就需要学习新的cookie相关的知识了。下面以豆瓣为例,使用Java程序读取“我的豆瓣”页面内容,在此过程中熟悉运用cookie。所......
  • 【待看】一周一深入之深入剖析PHP反序列化phar、session、soap反序列化
    引言接上个文章,一周一深入之深入剖析PHP反序列化上个文章把php反序列化的基础以及trick总结完了,这篇文章就总结一下PHP常见的三个组件反序列化,Phar、session、soap反序列化。一周一深入之深入剖析PHP反序列化phar、session、soap反序列化引言一、什么是Phar以及Phar反序列化Phar......
  • 前端cookie为什么无法传递给后端
    异常描述在进行登录权限校验时,需要使用cookie。然而,在设置cookie时会出现以下异常,导致后端session为空异常。前端已经设置WITH_CREDENTIALS:true。解决办法将访问的127.0.0.1修改为使用localhost进行访问,就可以携带上cookie了。可能原因1.Cookie的域名限制Cookie......
  • 【会话控制】cookie、session和token
    一、介绍所谓会话控制就是对会话进行控制,HTTP是一种无状态的协议,它没有办法区分多次的请求是否来自于同一个客户端,无法区分用户,而产品中又大量存在的这样的需求,所以我们需要通过会话控制来解决该问题。常见的会话控制技术有三种:cookiesessiontoken......
  • cookie是什么?和session有什么区别?
    Cookie和Session都是用于跟踪用户会话状态的技术,但它们以不同的方式工作,并且存储位置不同。Cookie:定义:Cookie是小型的数据文件,由服务器发送到客户端浏览器,然后浏览器将这些数据存储在用户的本地硬盘上,当浏览器再次请求同一网站时,它会将这些Cookie发送回服务器。存储位置......
  • 会话管理Cookie和Session(源码级讲解、超详细)
    文章目录1.会话管理概述1.1为什么需要会话管理1.1.2会话管理实现的手段2Cookie2.1Cookie概述2.2Cookie的使用2.3Cookie的时效性2.4Cookie的提交路径3.Session3.1HttpSession概述3.2HttpSession的使用3.3HttpSession时效性1.会话管理概述1.1为什么......
  • cookie和session
    一、Cookie和Session的知识点1.Cookie定义:Cookie是存储在用户本地终端上的数据,它是由服务器发送到用户浏览器并保存在本地的一小块数据。当用户再次访问同一网站时,浏览器会将Cookie发送回服务器,以便服务器识别用户身份或记录用户相关信息。工作原理:服务器在HTTP......