关闭浏览器,重新使用之前已登录的cookie(jsessionId),还是登录状态,是因为服务器的session还没过期吗

关闭浏览器,重新使用之前已登录的cookie(jsessionId),还是登录状态,是因为服务器的session还没过期吗,第1张

cookie有的过期是有时间显示的,就要看你访问的服务,内部是如何实现的。有的要按退出才删除cookie,有的则是关闭浏览器,它也会监听到,清除cookie;有的要是没安全退出,关闭浏览器,需要一定的时间这个session才会过时。

访问第一个页面,登陆成功了,会返回sessionid,把取得的sessionid通过cookie传递到第二次访问中,浏览器就是这么实现的,cookie是包含在>

在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来读取。

2COOKIE

所谓Cookie,只是一条极为短小的信息,它能够被网站自动地文本方式放置在一台电脑的硬盘中。通过Cookie,网站可以识别你是第一次访问,或是又一次访问它。网站还可以利用Cookie了解你对哪些内容感兴趣,收集与用户有关的信息,例如记录自动登录的时间限制,记录用户名,投票仅一次的限制等等。在你浏览某些网站的时,网站的程序会在你不知不自觉中将一个小的Cookie(作为一个文本文件)存储在你的硬盘中。如果你想知道自己电脑里都有什么样的Cookie,那么请在Windows目录下寻找Cookie的文件夹。

去除Cookie

如果你不想在电脑里存储Cookie,可以改变浏览器的设置。具体方法如下(以IE为例):

启动IE,找到“工具/Internet 选项/安全/自定义级别”,这时你就可以看到如何处理Cookie的不同选项了。这种方法适用于IE 50以上的版本。

这是为了返回的cookie不在响应体里面不是json格式的,而是在响应头里面,前面已写在响应体里面用json path extractor获取cookie

1、给登录的请求下添加一个正则表达式提取器,从头部提取JSESSIONID:

 原本登录返回的JSSESSIONID如下:

所以我们正则表达式写为如下的格式:

Set-Cookie: JSESSIONID=(); Path=/lanzhouhf_Web; >

不需要这么麻烦,jmeter配置文件中可以设置自动保存cookie变量,具体如下:

在bin目录下的jmeterproperties,搜CookieManagersavecookies,把后面的值改为true,去掉行首的#号,然后保存后重启jmeter。

在需要取Cookie的线程里添加一个>

经过上述 *** 作,执行线程之后,获取到的cookie就会被保存在线程变量里,具体的格式为COOKIE_xxxx,其中xxxx为具体的实际cookie名;这样在同一个线程内其它 *** 作组件都是可以直接通过${COOKIE_xxxx}来获取的。你可以尝试用Debug Sample来测试${COOKIE}值是不是有取到等候后cookie 中保存的jsession值。

这个jsessionid是有的。。只是没有显示到页面

这种是避免客户端禁止Cookie使用的一种手段

网上说tomcat中能够禁止他显示的 一般这个都是由浏览器在负责处理

所以你不用去管他这个jsessionid 通过代码还是能够获取到的

注:以下内容基于以tomcat作为web服务器

session是>

以上就是关于关闭浏览器,重新使用之前已登录的cookie(jsessionId),还是登录状态,是因为服务器的session还没过期吗全部的内容,包括:关闭浏览器,重新使用之前已登录的cookie(jsessionId),还是登录状态,是因为服务器的session还没过期吗、java里,如何让程序访问指定网页、JSESSIONID,cookie与SESSION的区别和联系 同名JSESSIONID处理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9268142.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)