中易网

JSESSIONID 和Cookie的区别与联系

答案:2  悬赏:70  
解决时间 2021-03-02 19:48
JSESSIONID 和Cookie的区别与联系
最佳答案
具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。

Cookie的优缺点:

优点:极高的扩展性和可用性
通过良好的编程,控制保存在cookie中的session对象的大小。
通过加密和安全传输技术(SSL),减少cookie被破解的可能性。
只在cookie中存放不敏感数据,即使被盗也不会有重大损失。
控制cookie的生命期,使之不会永远有效。偷盗者很可能拿到一个过期的cookie。
缺点:
Cookie数量和长度的限制。每个domain最多只能有20条cookie,每个cookie长度不能超过4KB,否则会被截掉。
安全性问题。如果cookie被人拦截了,那人就可以取得所有的session信息。即使加密也与事无补,因为拦截者并不需要知道cookie的意义,他只要原样转发cookie就可以达到目的了。
有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务器端保存一个计数器。如果我们把这个计数器保存在客户端,那么它起不到任何作用。

Session的优缺点:
优点

如果要在诸多Web页间传递一个变量,那么用Session变量要比通过QueryString传递变量可使问题简化。

要使WEb站点具有用户化,可以考虑使用Session变量。你的站点的每位访问者都有用户化的经验,基于此,随着LDAP和诸如MS Site

Server等的使用,已不必再将所有用户化过程置入Session变量了,而这个用户化是取决于用户喜好的。

可以在任何想要使用的时候直接使用session变量,而不必事先声明它,这种方式接近于在VB中变量的使用。使用完毕后,也不必考虑将其释放,因为它将自动释放。

缺点

Session变量和cookies是同一类型的。如果某用户将浏览器设置为不兼容任何cookie,那么该用户就无法使用这个Session变量!

当一个用户访问某页面时,每个Session变量的运行环境便自动生成,这些Session变量可在用户离开该页面后仍保留20分钟!(事实上,这些变量一直可保留至“timeout”。“timeout”的时间长短由Web服务器管理员设定。一些站点上的变量仅维持了3分钟,一些则为10分钟,还有一些则保留至默认值20分钟。)所以,如果在Session中置入了较大的对象(如ADO recordsets,connections, 等等),随着站点访问量的增大,服务器将会因此而无法正常运行!

因为创建Session变量有很大的随意性,可随时调用,不需要开发者做精确地处理,所以,过度使用session变量将会导致代码不可读而且不好维护。
全部回答
在web service中,谈到保存上下文机制或者记录用户登录情况等等,就需要谈到2中不同的技术,session和cookie,这在性能测试时,我想在做关联时也是基于sessionid的考虑。接下来,就浅析一下我自己对他们的理解,记录每一天的点滴。 1. session: session是针对每一个用户的,变量的值保存在服务器端,通过sessionid来区分不同的客户,session是以cookie或url重写为基础。默认使用cookie来实现,系统会创造一个名为jsessionid的输出cookie,或称为"session cookie",以区别persistent cookies(通常所说的cookie).session cookie是存储在浏览器中,并不是写在硬盘上的,但是把浏览器的cookie禁止后,使用response对象的encodeurl或encoderedirecturl方法编码url,web服务器会采url重写的方式传递sessionid,用户就可以在地址栏看到jsessionid=a09jhghkhu68624309uty84932之类的字符串。 通常session cookie是不能跨窗口使用,当用户新开了一个浏览器进入相同的页面时,系统会赋予用户一个新的sessionid,这样信息共享的目的就达不到,此时可以把sessionid保存在persistent cookie中,然后再新的窗口中读出来,就可以得到上一个窗口的sessionid了,这样通过session cookie和persistent cookie的结合,实现了跨窗口的会话跟踪。 session的工作原理 就session的实现而言,好像是这样的: (1)当有session启动时,服务器生成一个唯一值,称为sessionid(好像是通过取进程id的方式取得的)。 (2)然后,服务器开辟一块内存,对应于该sessionid。 (3)服务器再将该sessionid写入浏览器的cookie(一些在网页的源代码中有所体现)。 (4)服务器内有一进程,监视所有session的活动状况,如果有session超时或是主动关闭,服务器就释放该内存块。 (5)当浏览器连入iis(服务器)时并请求的asp(脚本语言)内用到session时,iis(服务器)就读浏览器cookie中的sessionid。 (6)然后,服务检查该sessionid所对应的内存是否有效。 (7)如果有效,就读出内存中的值。 (8)如果无效,就建立新的session。 注意: (1)在大浏览量的网站,session并不保险,我们过去的网站就经常碰到存在session中得值不正确(可能出现重复的session id)。 (2)session id不能从硬盘上的cookie文件获得,如果想在客户端获知自己的session id,只能通过javascript来读取。 2.cookie 所谓cookie,只是一条极为短小的信息,它能够被网站自动地文本方式放置在一台电脑的硬盘中。通过cookie,网站可以识别你是第一次访问,或是又一次访问它。网站还可以利用cookie了解你对哪些内容感兴趣,收集与用户有关的信息,例如记录自动登录的时间限制,记录用户名,投票仅一次的限制等等。在你浏览某些网站的时,网站的程序会在你不知不自觉中将一个小的cookie(作为一个文本文件)存储在你的硬盘中。如果你想知道自己电脑里都有什么样的cookie,那么请在windows目录下寻找cookie的文件夹。 去除cookie 如果你不想在电脑里存储cookie,可以改变浏览器的设置。具体方法如下(以ie为例): 启动ie,找到“工具/internet 选项/安全/自定义级别”,这时你就可以看到如何处理cookie的不同选项了。这种方法适用于ie 5.0以上的版本。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
追一个极度内向的女生 帮我考虑下那女生是
重组牛碱性成纤维细胞生长因子(融合蛋白)眼用
我的六级写作为什么是零分呢?
有两个人走在街上,大人说:"你是我的儿子."但
空间印象装饰有限公司地址在什么地方,想过去
银满堂怎么去啊,有知道地址的么
华西口腔医院廖小宜、张三友、王昌美、潘剑、
许昌没有迪奥专柜
苏州市区在哪里?
零启点教育中心在哪里啊,我有事要去这个地方
自行车轮的外直径是70厘米,每分钟转动100周,
电脑会突然的断电一样关机,显示器没有信号输
金都家园我想知道这个在什么地方
上海总站到上海复旦医院虹口区场中路的打的得
梦幻西游因为死亡次数过多被禁入游戏怎么办
推荐资讯
西安 非婚生子女如何缴纳社会抚养费
有洁癖,刚才隔壁的来我宿舍,只穿内裤,坐到
电脑维修 临汾 电话?河西郊区最好的技术
蚂蚁是贬义词还是褒义词?
华为交换机上的这两个配置命令有什么不同?求
艳雪英文名是什么
小米2s右上角中国移动E的标志怎么修改 或者可
春天女式黑色风衣应该搭什么鞋子,除了高跟鞋
毛毛蛋糕地址有知道的么?有点事想过去
广安市武胜县华封镇地址在什么地方,想过去办
婚后老公以他的名义买了房屋如果离婚了我可以
美发店说的什么日化线的洗发水和他们美发的不
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?