首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

cookie 跟 session 详细阐述 ( cookie 和 session 的区别

2012-08-25 
cookie 和 session 详细阐述 ( cookie 和 session 的区别????? 1、session保存在服务器,客户端不知道其中的

cookie 和 session 详细阐述 ( cookie 和 session 的区别

????? 1、session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息。
  2、session中保存的是对象,cookie中保存的是字符串。
  3、session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。
  4、session默认需要借助cookie才能正常工作。如果客户端完全禁止cookie,session,这种方法将失效。
  但是如果服务器端启用了url编码,也就是用
  URLEncoder.encode("index.jsp?id=3","UTF-8");
  把所有的url编码了,则会在url后面出现如下类似的东西
  index.jsp:jsessionid=fdsaffjdlksfd124324lkdjsf?id=3
  服务器通过这个进行session的判断
  5 session在用户会话结束后就会关闭了,但cookie因为保存在客户端,可以长期保存
  6 COOKIE:是服务端向客户端写入的小的片段信息。cookie信息保存在服务器缓存区,不会在客户端显现。当你第一次登陆一个网站,服务器向你的机器写得片段信息。你可以在Internet选项中找到存放cookie的文件夹。如果不删除,cookie就一直在这个文件夹中。

?

?

?

两者均用于保存用户私有信息
session
存储于服务器端,可被服务器端脚本修改。数据不在网络上传递。
cookie
存储于客户端,可被客户端脚本修改。数据将在网络上传递。

--------------------------------------------

session会给服务器带来开销。
cookie不会给服务器增加过多的开销。
php5中将会对两者进行加密传输,所以在网络上传递将会比现在安全多了。

--------------------------------------------

二者都是保存数据的机制,其他的变量都会因页面的更换而丢失,所以更换页面时保持上页的一些数据成为了一种需要.
既然HTTP协议中没有考虑保存数据,那就只好另想方案了,经过思考,保存数据出现两种方案,一种是把数据保存在客户端,那就是Cookie,一种是把数据保存在服务器端,那就是Session.目的都是保持数据,但各有优缺点...
喜欢哪种,随你喽!!

?

?

<input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764">
<input type="text">
</form>
实际上这种技术可以简单的用对action应用URL重写来代替。

cookie 和session 的区别:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
?? 考虑到安全应当使用session

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
?? 考虑到减轻服务器性能方面,应当使用COOKIE

4、单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。

5、所以个人建议:
?? 将登陆信息等重要信息存放为SESSION
?? 其他信息如果需要保留,可以放在COOKIE中

施杨出品!!!


作者:施杨(施杨's Think out)
出处:http://shiyangxt.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

?

???????? cookie[i].getValue());
?? }
}


???????? 运行结果:
cookie name:JSESSIONID cookie value:KWJHUG6JJM65HS2K6

为什么会有cookie呢,大家都知道,http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,那么要怎么才能实现网上商店中的购物车呢,session就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客户,session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出cookie,我们叫做session cookie,以区别persistent cookies,也就是我们通常所说的cookie,注意session cookie是存储于浏览器内存中的,并不是写到硬盘上的,这也就是我们刚才看到的JSESSIONID,我们通常情是看不到JSESSIONID的,但是当我们把浏览器的cookie禁止后,web服务器会采用URL重写的方式传递Sessionid,我们就可以在地址栏看到sessionid=KWJHUG6JJM65HS2K6之类的字符串。
???????? 明白了原理,我们就可以很容易的分辨出persistent cookies和session cookie的区别了,网上那些关于两者安全性的讨论也就一目了然了,session cookie针对某一次会话而言,会话结束session cookie也就随着消失了,而persistent cookie只是存在于客户端硬盘上的一段文本(通常是加密的),而且可能会遭到cookie欺骗以及针对cookie的跨站脚本攻击,自然不如session cookie安全了。
???????? 通常session cookie是不能跨窗口使用的,当你新开了一个浏览器窗口进入相同页面时,系统会赋予你一个新的sessionid,这样我们信息共享的目的就达不到了,此时我们可以先把sessionid保存在persistent cookie中,然后在新窗口中读出来,就可以得到上一个窗口SessionID了,这样通过session cookie和persistent cookie的结合我们就实现了跨窗口的session tracking(会话跟踪)。
???????? 在一些web开发的书中,往往只是简单的把Session和cookie作为两种并列的http传送信息的方式,session cookies位于服务器端,persistent cookie位于客户端,可是session又是以cookie为基础的,明白的两者之间的联系和区别,我们就不难选择合适的技术来开发web service了。

热点排行
Bad Request.