Cookie和Session主要的区别

来源:admin 发布时间:2022-08-20 10:49:51 点击数:
Cookie 和Session都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。Cookie一般用来保存用户信息,Session主要作用是通过服务端记录用户的状态。

一、工作原理

1、Cookie

(1)浏览器端第一次发送请求到服务器端
(2)服务器端创建Cookie,该Cookie中包含用户的信息,然后将该Cookie发送到浏览器端
(3)浏览器端再次访问服务器端时会携带服务器端创建的Cookie
(4)服务器端通过Cookie中携带的数据区分不同的用户

长治网络安全等级保护,长治等保,长治网安备案,网站制作,网站建站,网站运维,Linux系统运维,Windows系统运维,服务器运维,环境部署,环境搭建,私有云存储


2、Session

(1)Session是基于Cookie实现的。浏览器端第一次发送请求到服务器端,服务器端创建一个Session,为了保证在一个会话的多次请求之间Session是同一个,同时会创建一个特殊的Cookie,其name为JSESSIONID的固定值,value为session对象的ID,然后再将该Cookie发送至浏览器端。
(2)浏览器端发送第二次及以上的请求到服务器端,浏览器端访问服务器端时就会携带该name为JSESSIONID的Cookie对象
(3)服务器端根据name为JSESSIONID的Cookie的value,去查询Session对象,从而区分不同用户。

注:对于第三步(3)

  • 如果name为JSESSIONID的Cookie不存在,即发生了关闭或更换浏览器的情况,返回(1)中重新去创建Session与特殊的Cookie

  • name为JSESSIONID的Cookie存在,根据value中的SessionId去寻找session对象

  • value为SessionId不存在,返回(1)中重新去创建Session与特殊的Cookie

  • value为SessionId存在,返回session对象






长治网络安全等级保护,长治等保,长治网安备案,网站制作,网站建站,网站运维,Linux系统运维,Windows系统运维,服务器运维,环境部署,环境搭建,私有云存储



二、相同点与不同点

1、相同点:
Cookie和Session都是来完成一次内多次请求间的数据共享

2、不同点
存储方式:Cookie是将数据存储在客户端,Session将数据存储在服务端
安全:Cookie不安全,Session安全
存储时间:Cookie可以长期储存,而Session默认储存30分钟
数据大小:Cookie最大不超过3KB,而Session没有大小限制
对于服务器性能:Cookie不占用服务器资源,Session需占用服务器资源

解释:关于Cookie的缺点,第一,因为Cookie这个数据是存在浏览器上、存在客户端上的,因为客户端是谁我们不知道,且客户端系统的安全程度也远远不如服务器,存在客户端的数据不是很安全,特别是比较隐私的,如密码等。第二,Cookie在很多请求中会把数据发送给服务器,每次访问服务器都发同样的数据,就会增加数据量,会对性能产生一定的影响。为了解决这些问题,引用了Session

三、Cookie和Session的使用

1、Cookie的使用

(1)设置Cookie返回给客户端

















//cookie示例    @RequestMapping(path = "cookie/set", method = RequestMethod.GET)    @ResponseBody    public String setCookie(HttpServletResponse response) {        //创建cookie        Cookie cookie = new Cookie("code", CommunityUtil.generateUUID());        //设置cookie生效范围        cookie.setPath("community/alpha");        //设置cookie的生存时间        cookie.setMaxAge(60*10);        //发送cookie        response.addCookie(cookie);
        return "set cookie";    }


(2)使用Spring框架提供的@CookieValue注解获取Cookie的值

@CookieValue可以将cookie中key的值赋给参数,如下代码,传给了参数code








@RequestMapping(path = "cookie/get", method = RequestMethod.GET)    @ResponseBody    public String getCookie(@CookieValue("code") String code) {        System.out.println(code);        return "get cookie";    }

2、Session的使用

(1)设置Session

创建Session不需要手动创建,它跟cookie不一样,SpringMVC会自动的帮我们创建Session并且注入进来,Session和request、response以及model对象的用法一样,只要声明SpringMVC就会将其注入进来,如下代码声明了(HttpSession session)。












//session示例    @RequestMapping(path = "session/set", method = RequestMethod.GET)    @ResponseBody    public String setSession(HttpSession session) {        session.setAttribute("id",1);        session.setAttribute("name","Test");        return "set session";    }

(2)获取Session









@RequestMapping(path = "session/get", method = RequestMethod.GET)    @ResponseBody    public String getSession(HttpSession session) {        System.out.println(session.getAttribute("id"));        System.out.println(session.getAttribute("name"));        return "get session";    }

————————————————
版权声明:本文为CSDN博主「Black-S」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_55894557/article/details/124135293

长治等保,等保,网络安全,网络等保,等级保护,网络安全等保,网络安全等级保护,长治网络安全等级保护,等保公司,等保测评,等级保护2.0,定级,定级备案,等保备案,长治等保备案,山西等保备案,系统测评,系统备案,网安备案,等保备案服务,等保咨询,公安局备案,二级等保,三级等保,三级测评,系统整改,做等保的公司,网站建设,企业网站建设,企业网站开发,企业网站运维,Linux系统运维,Windows系统运维,服务器运维,环境部署,环境搭建,私有云存储

Powered by 园鉴科技 ©2021-2024  www.anycastyun.com

首 页
产 品
方 案
客 服