博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于session和cookie
阅读量:5167 次
发布时间:2019-06-13

本文共 1178 字,大约阅读时间需要 3 分钟。

  近期有被问到一个问题--“session和cookie的本质是什么?为什么需要这两种技术?”,我一脸懵,所以在此记录一下整理的一些知识点。

  首先,Session和Cookie的本质是会话跟踪技术web应用程序是使用HTTP协议传输数据的,由于HTTPS是无状态的,一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要重新建立连接。简单一点说明问题:HTTP协议是无状态的协议。这就意味着服务器无法从连接上跟踪会话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪该会话,必须引入一种机制。

  首先是Cookie,Cookie本质是服务器发送给客户端的特殊信息,而这些信息是以文本的形式存储在客户端的,然后客户端每次发送请求的时候,都会带上这些信息,从而可以让服务器知道是哪一个用户,个人理解,Cookie就好像是一个身份证,无论要去办什么事情,请随时带着自己的身份证,以证明你是谁,接着才能知道接下来的事情应该是什么。下面简单的用图的方式说明一下,cookie传递的过程:

注意:cookie具有不可跨域性。

  然后是Session,Session是另一种记录客户状态的机制,不同于Cookie技术,Session是记录在服务器端的。客户端浏览器访问服务器的时候,服务器把信息以某种形式记录下来。产生一个SessionId来表明这块内存空间是你的(在tomcat中称为jsesessionId)。同时,会在服务器返回给浏览器端时,将sessionId返回,然后记录在Cookie中,也就是只要浏览器没有关闭,并且没有失效,那么你每次发送信息都会带着sessionId,那么服务器就会根据sessionId找到对应的存储空间,找到相应的信息,从而就完全能将http无状态的问题解决掉了。但是,如果浏览器关闭,那么服务器就会将对应的sessionId对应的存储空间清除,下次登陆的时候,重新产生新的存储空间和对应的sessionId。

  注意:当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了sessionId,如果已包含则说明以前已经为此客户端创建过session。如果客户端请求不包含sessionId,则为此客户端创建一个session并且生成一个与此session相关的sessionid。

 

 

参考文章:https://www.cnblogs.com/zhouhbing/p/4204132.html

https://blog.csdn.net/jpygx123/article/details/82973816

转载于:https://www.cnblogs.com/kekelele/p/10359068.html

你可能感兴趣的文章
用记事本写第一个Java程序
查看>>
ios 中的UI控件学习总结(1)
查看>>
C#中的各种排序算法
查看>>
C#.NET中使用存储过程的方法及其优点
查看>>
datatable导出到Word / Excel / PDF / HTML .NET
查看>>
sql单表简单的分页脚本(续)
查看>>
Unity5 AssetBundle系列——资源加载卸载以及AssetBundleManifest的使用
查看>>
SEO代码优化的学习笔记
查看>>
如何制作一个横版格斗过关游戏 Cocos2d-x 2.0.4
查看>>
树——二叉搜索树的实现
查看>>
java相关
查看>>
jquery控制textarea是否允许编辑和控制input type="radio" 是否允许选择
查看>>
第三次作业
查看>>
初识SeekBar
查看>>
Java计算两个程序运行时间
查看>>
用C读取INI配置文件
查看>>
描述字符串写入文件
查看>>
maven中properties标签定义变量
查看>>
Android简单逐帧动画Frame的实现(二)
查看>>
四人团-江南行-在乌镇西栅旅游
查看>>