超级蜘蛛池之理解Cookie与Session会话机制和区别

来源:未知 浏览 148次 时间 2021-06-02 18:28

会话(Session)跟踪是Web程序中常用的技术用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份Session通过在服务器端记录信息确定用户身份。

超级蜘蛛池之理解Cookie与Session会话机制和区别


1、cookie和session的定义

1.1、什么是Cookie

超级蜘蛛池之理解Cookie与Session会话机制和区别


1、cookie和session的定义

1.1、什么是Cookie

Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。网络服务器用HTTP头向客户端发送cookies在客户终端浏览器解析这些cookies并将它们保存为一个本地文件它会自动将同一服务器的任何请求缚上这些cookies 。cookie机制采用的是在客户端保持状态的方案。它是在用户端的会话状态的存贮机制他需要用户打开客户端的cookie支持cookie的作用就是为了解决HTTP协议无状态的缺陷所作的努力。

Cookie分发是通过扩展HTTP协议来实现的服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie然而纯粹的客户端脚本如JavaScript也可以生成cookie。而cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器检查所有存储的cookie如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置则把该cookie附在请求资源的HTTP请求头上发送给服务器。

Cookie的内容主要包括:名字值过期时间百度站长工具过期时间路径和域。路径与域一起构成cookie的作用范围。若不设置过期时间则表示这个cookie的生命期为浏览器会话期间关闭浏览器窗口cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不存储在硬盘上而是保存在内存里当然这种行为并不是规范规定的。若设置了过期时间浏览器就会把cookie保存到硬盘上关闭后再次打开浏览器这些cookie仍然有效直到超过设定的过期时间存储在硬盘上的cookie可以在不同的浏览器进程间共享而对于保存在内存里的cookie不同的浏览器有不同的处理方式。



1.2、什么是Session

Session机制是一种服务器端的机制服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。当程序需要为某个客户端的请求创建一个session时服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id)如果已包含则说明以前已经为此客户端创建过session服务器就按照session id把这个session检索出来使用(检索不到会新建一个)如果客户端请求不包含session id则为此客户端创建一个session并且生成一个与此session相关联的session idsession id的值应该是一个既不会重复又不容易被找到规律以仿造的字符串这个session id将被在本次响应中返回给客户端保存。

2、二者的区别

2.1、存取方式的不同

Cookie中只能保管ASCII字符串假如需求存取Unicode字符或者二进制数据需求先进行编码。Cookie中也不能直接存取Java对象。若要存储略微复杂的信息运用Cookie是比拟艰难的。

而Session中能够存取任何类型的数据包括而不限于String、Integer、List、Map等。Session中也能够直接保管Java Bean乃至任何Java类对象等运用起来十分便当。能够把Session看做是一个Java容器类。

2.2、隐私策略的不同

Cookie存储在客户端阅读器中对客户端是可见的客户端的一些程序可能会窥探、复制以至修正Cookie中的内容。而Session存储在服务器上对客户端是透明的百度站长工具对客户端是透明的不存在敏感信息泄露的风险。

假如选用Cookie比较好的方法是敏感的信息如账号密码等尽量不要写到Cookie中。最好是像Taobao、Baidu那样将Cookie信息加密提交到服务器后再进行解密保证Cookie中的信息只要本人能读得懂。而假如选择Session就省事多了反正是放在服务器上Session里任何隐私都能够有效的保护。

2.3、有效期上的不同

使用过百度的人都知道假如登录过百度则百度的登录信息长期有效。用户不用每次访问都重新登录百度会持久地记载该用户的登录信息。要到达这种效果运用Cookie会是比较好的选择。只需要设置Cookie的过期时间属性为一个很大很大的数字。

由于Session依赖于名为JSESSIONID的Cookie而Cookie JSESSIONID的过期时间默许为–1只需关闭了阅读器该Session就会失效因而Session不能完成信息永世有效的效果。运用URL地址重写也不能完成。而且假如设置Session的超时时间过长服务器累计的Session就会越多越容易招致内存溢出。

标签: 服务器SessionCookiecookie