cookie 与session的区别联系以及生命周期

Cookie的定义:

浏览网站,WEB服务器显示网页,Cookie会记录你在网站上所打的文字或是一些选择。当再次跳转同一个网站,web服务器会先看看有没有上次留下的cookie资源,如果有会根据Cookie里的内容来判断使用者。送出特定的网页给你。

Cookie的使用很普遍,许多提供个人化服务的网站,都是利用Cookie来辨认使用者,以便送出使用者量身定做的内。eg:web接口免费的email网站都要使用到Cookie。

具体来说,Cookie机制采用的是在客户端保持状态的方案。

                  Session机制采用的是在服务器保持状态的方案。

同时,由于采用服务器保持状态的方案在客户端也需要保存一个标识,所以Session机制可能需要借助Cookie机制来达到保存标示的目的。

Cookie机制。正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过HTTP响应头中加上一行特殊指示以提示,浏览器按照指示生成相应的cookie。

然而纯粹的客户端脚本,如javaScript或者VBScript也可以生成Cookie。

而Cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器。浏览器检查所存储的Cookie。

如果某个Cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该cookie的请求附HTTP请求头上发送给服务器。

Cookie的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成。若不设置过期时间,则表示这个Cookie的生命为浏览器回话期间,关闭浏览器cookie就会消失。这种生命期为浏览器会话期Cookie。会话Cookie一般不会写在硬盘上而是保存在内存里,这种行为并不是规范规定的。

扫描二维码关注公众号,回复: 12398231 查看本文章

设置了过期时间,浏览器就会把Cookie保存在硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间,存储在硬盘上的cookie可以在不同的浏览器之间共享。eg:比如两个ie窗口。

对于保存在内存里的Cookie。不同浏览器有不同的处理方式session机制。

session机制是一种服务端机制,服务器使用一种类似于散列表的结构*(也可能就是使用散列表)来保存信息。

当程序需要为某个客户端请求创建session,服务端首先检查这个客户端请求是否已包含了session标识(称为seesionID)如果已经包含说明已经为此客户端创建过session,服务器就按照session ID把这个session检索出来

使用(检索不到,会新建一个),如果客户端请求不包含sessionID,在本次则为客户端创建一个session并且生成一个与此session相关联的sessionID将被在本次相应中返回给客户端保存。保存这个sessionID的方式可以采用Cookie。这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。一般这个cookie的名字都是类似与sessionID。但cookie可以被人为禁止,则必须有其他机制以便在cookie被禁止时仍然能够把session id传送给服务器。

经常被使用的一种技术叫做url重写,就是把sessionID直接加在URL的后面。还有一种技术叫做表单隐藏字段。就是服务器会自动修改表单隐藏字段。这就是服务器自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器

<form name="testform" action="/xxx"> 
<input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764"> 
<input type="text"> 
</form> 

实际上这种技术可以简单的用对action应用URL重写来代替。

Session 和Cookie的区别:

1.cookie创建于服务器端

2.cookie保存在浏览器端

3.cookie的生命周期可以通过cookie。setMaxAge(200)来设置,如果没有设置setMaxAge,

则cookie的生命周期当浏览器关闭的时候,就消亡了

4.cookie可以被多个同类型浏览器共享,可以把cookie想象成一张表

比较:

存在位置:cookie保存在浏览器的客户端,临时文件夹中

                  session:存在与服务器内存,一个session域对象为一个用户浏览器服务

安全性 :cookie是以文明的方式存放在客户端,安全性低,可以通过一个加密算法进行加密后

              进行存放。

               session存在于服务器内存中,所以安全性好。

网络传输量:cookie会传递消息给服务器

                    session本身存放于服务器,不会有传送流量。

生命周期:cookie的生命周期是累计的,从创建就计时开始,20分钟后,cookie生命结束

                 session生命周期是间隔的,从创建开始,开始计时如在20分钟没有访问session,那么session的生命周期被销毁。如果在第19分钟访问session,那么session重新计时,将重新计算session的生命周期。

关机:关机会造成session生命周期结束,但是对cookie没有影响。

访问范围:session为一个用户浏览器独享。

                cookie为多个用户浏览器共享

使session失效的方法:

1.关闭tomcat

2.reload web应用

3.session时间到

4.invalidate session

 转载于        tanyunlong_nice

               https://blog.csdn.net/tanyunlong_nice/article/details/47188659

猜你喜欢

转载自blog.csdn.net/wwwkm123/article/details/110919757