首页 > 其他分享 >一篇搞懂cookie和session

一篇搞懂cookie和session

时间:2023-03-07 18:55:49浏览次数:34  
标签:存储 浏览器 sessionID session cookie 服务器 搞懂

一篇搞懂cookie和session

cookie、session和token存在的意义是什么?

http是无状态的,每次请求是独立的,服务端不保存会话信息,所以他的好处也就是快,但缺点也显而易见,就是无法对不同用户进行区分。

什么是cookie?

cookie存储于客户端,请求后由服务器发送回浏览器,下次访问同一服务器时,将cookie作为参数携带至服务器。cookie是浏览器实现的一种数据存储功能,是name=value的键值对。

优点:不占用服务器资源,效率高。

缺点:数据安全性较低。

什么是session?

session基于cookie实现,存储于服务端,sessionID会被存储到客户端cookie中,浏览器第二次访问服务器时,服务器从cookie中获取sessionID查找对应session信息,存在说明用户已登录。

优点:安全性较高。

缺点:占用服务器资源,可能会占满,多台服务器下又会出现session存储在其中一台服务器上,其他服务器没法使用的情况,可以用redis服务器去解决,所有服务器都去调用redis服务器。

cookie和session区别

cookie存于客户端,session存于服务器。

cookie中数据不能超过4k,session存储空间大于cookie。

cookie只能存字符串,其他类型会被转为字符串类型,session可存储任意数据类型。

cookie的安全性比session低。

cookie和session执行流程

浏览器第一次向服务器发送请求,服务器检查是否有携带JSESSIONID的cookie。

如果存在,将cookie值取出,在服务器的session池中找到对应的session进行是否登录的校验。

如果不存在,服务器会创建一个session对象,并随机生成一个唯一的sessionID,保存到session池中,在响应浏览器时服务器会在http包的header中创建一个建为JSESSIONID,值为sessionID的cookie对象包含在Set-Cookie属性中返回给浏览器,浏览器将其存储起来下次访问时携带。

用户登出时,服务器会将session销毁,并生成新的JSESSIONID返回给浏览器,浏览器下次携带给服务器后通过JSESSIONID找不到对应的session说明用户是第一次登录。

不一定非要cookie和session配合使用,例如只用cookie也能实现相同功能,但将用户信息存放在cookie是有很大安全风险的,而将sessionID存放在cookie中则没有影响。

cookie的失效时间(会话cookie和持久cookie)

会话cookie

不设置过期时间,cookie保存在内存里,浏览器关闭,cookie就消失。

持久cookie

设置过期时间,setMaxAge(...),cookie保存在硬盘,只有时间过了才会失效。

标签:存储,浏览器,sessionID,session,cookie,服务器,搞懂
From: https://www.cnblogs.com/LoginX/p/Login_X64.html

相关文章

  • Python爬虫系列之Session和cookie的使用
    对于经常做数据采集的技术员来说,常常遇到采集的页面限制我们的访问,尤其在频繁刷新或者访问一个页面时会引起网站的一些列反爬措施。今天我们就来谈谈Session和cookie的......
  • cookie和session的区别
     会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服......
  • 大白话+画图 从源码角度一步步搞懂ArrayList和LinkedList的使用
    1.说说ArrayList1.基本原理ArrayList,原理就是底层基于数组来实现。01.基本原理:数组的长度是固定的,java里面数组都是定长数组,比如数组大小设置为100,此时你不停的往Arra......
  • document cookie
    cookieexpires最大不超过400天:https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis   ......
  • CGI, FastCGI, WSGI, uWSGI, uwsgi一文搞懂
    中间件1.服务器中间件:nginx,apache2.数据库中间件:介于应用程序和数据库之前的,MyCat3.消息队列中间件:kafka,rabbitmq,RocketmqCGI1.CGI是一种标准规范通用网关接口(Commo......
  • 浏览器控制台Application的local storage和session storage区别
    以下仅作为个人学习使用:(1)localStorage:仅在客户端(浏览器)中保存,不参与服务器的通信.设置:localStorage.setItem('Token',JSON.stringify(res.data))获取:localStorage.g......
  • Cookie 和 Session
    会话跟踪会话跟踪是Web程序中用于跟踪用户整个会话的技术,常用的会话跟踪技术是Cookie和Session。Cookie通过在客户端记录确定用户身份信息,Session通过在服务器端记录确定......
  • DVWA 之 Weak Session IDs - 弱会话IDs
    十三、WeakSessionIDs-弱会话IDs原理用户登录后,在服务器就会创建一个会话(Session),叫做会话控制,接着访问页面的时候就不用登录,只需要携带Session去访问。SessionID......
  • 孤狼老师-cookies使用和处理
          Cookie获取:例子,运行自己搭建的网站:    登录接口:  获取到cookies,完整的cookies直接返回:  GET方法使用cookie:   POST方法......
  • Azure China 中 VDI session host的监控
    再来继续谈谈AzureChina中AVDsessionhost的监控问题,之前说了WVDAgentHealthStatus这个query目前在21vAzure中还不可用,既然这样的话,想用LogAnalytics来监控看来是实现不......