session 对新开窗口无效

本文详细解释了session机制的工作原理及其与cookie的关系,探讨了如何通过设置cookie的过期时间来解决session在新窗口中无效的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

出现问题

session 对新开窗口无效。当你登录成功后,重新启动另一个新的窗口,发现你还得重新登录! 

解决方法

用cookie,但是要给cookie加个过期时间,否则你在新开的窗口中仍然得不到这个值。不要忘了,session可是和cookie有着关系的。

相关知识:(以下为引用)

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

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

保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。一般这个cookie的名字都是类似于SEEESIONID,而。比如weblogic对于web应用程序生成的cookie,JSESSIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764,它的名字就是JSESSIONID。

由于cookie可以被人为的禁止,必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。经常被使用的一种技术叫做URL重写,另一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。

在谈论session机制的时候,常常听到这样一种误解“只要关闭浏览器,session就消失了”。其实可以想象一下会员卡的例子,除非顾客主动对店家提出销卡,否则店家绝对不会轻易删除顾客的资料。对session来说也是一样的,除非程序通知服务器删除一个session,否则服务器会一直保留,程序一般都是在用户做log off的时候发个指令去删除session。然而浏览器从来不会主动在关闭之前通知服务器它将要关闭,因此服务器根本不会有机会知道浏览器已经关闭,之所以会有这种错觉,是大部分session机制都使用会话cookie来保存session id,而关闭浏览器后这个session id就消失了,再次连接服务器时也就无法找到原来的session。如果服务器设置的cookie被保存到硬盘上,或者使用某种手段改写浏览器发出的HTTP请求头,把原来的session id发送给服务器,则再次打开浏览器仍然能够找到原来的session。

恰恰是由于关闭浏览器不会导致session被删除,迫使服务器为seesion设置了一个失效时间,当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间。

### 回答1: 可能是因为SecureCRT窗口的大小和位置遮挡了Terminal窗口。你可以尝试以下方法: 1. 最大化Terminal窗口,或者缩小SecureCRT窗口,以便Terminal窗口能够显示出来。 2. 将SecureCRT窗口移动到屏幕的另一侧,或者将Terminal窗口移动到屏幕的另一侧,这样它们就不会互相遮挡。 3. 如果以上方法无法解决问题,可以尝试重安装SecureCRT,或者更SecureCRT到最版本,看看是否能够解决问题。 希望以上方法能够帮助你解决问题。 ### 回答2: SecureCRT是一种在网络管理和系统管理中使用的安全终端仿真软件,它提供了许多功能,如SSH、Telnet、Rlogin等协议的支持,以便让用户通过安全的方式远程访问和管理服务器或其他网络设备。 SecureCRT的Session Manager是其一个很强大的功能组件,它用于管理和组织用户的会信息。当用户打开SecureCRT时,Session Manager会自动弹出一个窗口,列出了用户之前保存的会信息。 可能有时候,Session Manager会挡住Terminal显示界面的问题是由于Session Manager窗口的位置或大小与Terminal窗口冲突所导致的。要解决这个问题,可以尝试以下几种方法: 1. 调整Session Manager窗口的位置或大小:可以尝试移动Session Manager窗口,将其调整到一个不会遮挡Terminal窗口的位置,或者调整Session Manager窗口的大小,使其不会与Terminal窗口重叠。 2. 最小化Session Manager窗口:如果不需要频繁地使用Session Manager,可以将其窗口最小化,这样就不会挡住Terminal窗口。 3. 关闭Session Manager窗口:如果不需要使用Session Manager功能,可以直接关闭Session Manager窗口,这样就不会再遮挡Terminal窗口。 4. 禁用Session Manager功能:如果在使用SecureCRT时不需要Session Manager功能,可以进入SecureCRT的设置,禁用或关闭Session Manager功能,这样就不会再出现Session Manager窗口挡住Terminal窗口的问题。 总之,解决SecureCRT Session Manager窗口挡住Terminal显示界面的问题,可以通过调整Session Manager窗口的位置或大小,最小化窗口或禁用功能来实现。 ### 回答3: SecureCRT session manager是一个用于管理和组织SecureCRT会的工具。它提供了一个界面,允许用户创建、编辑和删除会,以便更方便地连接到不同的远程主机。 如果SecureCRT session manager挡住了terminal显示界面,可能是因为两者的窗口位置或大小设置不合适,导致session manager窗口遮挡了terminal窗口。为解决此问题,可以按照以下步骤进行操作: 1. 首先,尝试调整session manager窗口的位置和大小,以让其不再挡住terminal显示界面。可以将session manager窗口拖动到屏幕的任意位置,在屏幕上放置它不遮挡其他需要查看或操作的窗口。 2. 如果调整窗口位置和大小无效,可以尝试在SecureCRT中使用分屏功能。分屏可以将SecureCRT窗口分成多个区域,每个区域显示不同的会或终端。通过分屏,可以将session manager窗口放在一个区域,而将terminal窗口放在另一个区域,以避免相互遮挡。 3. 另外,您还可以尝试最大化SecureCRT窗口,以利用更多的屏幕空间显示会和终端。最大化窗口可以通过点击窗口右上角的最大化按钮或使用窗口管理器的相应功能来实现。 总的来说,通过适当调整SecureCRT session manager和terminal窗口的位置和大小,或者使用分屏功能,您应该可以解决session manager挡住terminal显示界面的问题,以便更好地管理和操作SecureCRT会
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值