切换浏览器内核是否会导致session丢失,如何解决这个问题?

问题描述

切换浏览器内核是否会导致session丢失,如何解决这个问题? 问题补充:但是,像CSDN或者校内网这些网站在切换内核的时候为啥没有发生丢失session的事情?他们是如何解决的呢?hudingchen 写道

解决方案

不同的浏览器,session肯定不同,如果用cookie保存也是有问题,每个浏览器cookie保存方式不同,觉得这个问题不需要处理,用户切换浏览器,那么就认为它是新的操作,session丢失是正确的。
解决方案二:
1.session丢失问题的解决 2. 当采用window.open() 打开新的窗口时,经常会出现session丢失的问题,在使用Frame或者iFrame会使客户端不能写cookie,而Session是基于cookie的,所以使用Frame或者iFrame的页面也就不能保持Session. 使用IE内核的浏览器基本上都会存在这个问题;目前使用的是J2EE处理session,看大家的情况,PHP,ASP 都同样存在这样的问题;不排除与客户段的情况存在关系。但不确定到底什么原因引起的。我觉得可能是: 3.1。客户端打开窗口等程序引起; 4.2。Cookie使用4K限制存在的问题; 5.3。客户端浏览器使用某些插件,或者某些特殊设置(如采用新的进程打开窗口MAXTHON等)导致该问题出现; 6.4。最近IE7也经常出现该问题; 7.当然,对于Session机制本身是无可厚非的。但各种客户端的条件是难以控制的;不知道这个问题什么时候才能得到解决;现在的Web应用,月来越难了。 标准不统一;客户端情况复杂; 8.一开始分析,可能是页面有缓存的问题。所以先使用语句使页面不再有缓存: 9.<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 10.<meta http-equiv="pragma" content="no-cache"> 11.<meta http-equiv="Cache-Control" content="no-cache, must-revalidate"> 12.<meta http-equiv="expires" content="0"> 13.但是问题依旧。在网上查询到一种方法,采用window.open()方法的name参数,同样可以保证只弹出一个页面,然后在这个弹出页面进行操作。 14.关于Window.open的参数小结(参书改编) 先看一个例子: 15.[javascipt:]window.open("Webpage.asp?",Derek,"height=100,width=100,status=yes,toolbar=yes, 16.menubar=no,location=no"); 17.此语句打开一个新窗口,页面为webpage.asp,参数为var,名字为Derek,高为100,宽为100,显示状态栏和工具条,不显示菜单和地址。 18.具体总结的各个属性参数如下: 19.window = object.open([URL ][, name ][, features ][, replace]]]]) 20.URL:新窗口的URL地址 21.name:新窗口的名称,可以为空 22.featurse:属性控制字符串,在此控制窗口的各种属性,属性之间以逗号隔开。 23.fullscreen= { yes/no/1/0 } 是否全屏,默认no 24.channelmode= { yes/no/1/0 } 是否显示频道栏,默认no 25.toolbar= { yes/no/1/0 } 是否显示工具条,默认no 26.location= { yes/no/1/0 } 是否显示地址栏,默认no 27.directories = { yes/no/1/0 } 是否显示转向按钮,默认no 28.status= { yes/no/1/0 } 是否显示窗口状态条,默认no 29.menubar= { yes/no/1/0 } 是否显示菜单,默认no se 30.scrollbars= { yes/no/1/0 } 是否显示滚动条,默认yes 31.resizable= { yes/no/1/0 } 是否窗口可调整大小,默认no 32.width=number 窗口宽度(像素单位) 33.height=number 窗口高度(像素单位) 34.top=number 窗口离屏幕顶部距离(像素单位) 35.left=number 窗口离屏幕左边距离(像素单位) 36.其中name参数用来在以后使用的html链接的target属性时引用这个窗口(用来在以后使用的html链接的target属性时引用这个窗口,在弹出页面使用<base target="name">)之外,还可以是以下参数 37._blank 表示新开一个窗口,_parent表示父框架窗口,_self表示覆盖该窗口,xxx表示覆盖名字为xxx的窗口(每个窗口都可以给他命名)
解决方案三:
session id是存在cookie里的,如果切换浏览器,cookie消失的话,那么丢session是必然的
解决方案四:
你说那种情况可能用cookie保存的,如果你切换的两个浏览器cookie保存方式相同,是可以保存session的,但是你不能保证每个用户使用的浏览器的cookie相同,而且一些用户浏览器是禁用cookie的,你是无法控制的。
解决方案五:
信息放在cookie中,读取cookie试试。
解决方案六:
session丢失问题的解决 当采用window.open() 打开新的窗口时,经常会出现session丢失的问题,在使用Frame或者iFrame会使客户端不能写cookie,而Session是基于cookie的,所以使用Frame或者iFrame的页面也就不能保持Session. 使用IE内核的浏览器基本上都会存在这个问题;目前使用的是J2EE处理session,看大家的情况,PHP,ASP 都同样存在这样的问题;不排除与客户段的情况存在关系。但不确定到底什么原因引起的。我觉得可能是: 1。客户端打开窗口等程序引起; 2。Cookie使用4K限制存在的问题; 3。客户端浏览器使用某些插件,或者某些特殊设置(如采用新的进程打开窗口MAXTHON等)导致该问题出现; 4。最近IE7也经常出现该问题; 当然,对于Session机制本身是无可厚非的。但各种客户端的条件是难以控制的;不知道这个问题什么时候才能得到解决;现在的Web应用,月来越难了。 标准不统一;客户端情况复杂; 一开始分析,可能是页面有缓存的问题。所以先使用语句使页面不再有缓存:<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="pragma" content="no-cache"><meta http-equiv="Cache-Control" content="no-cache, must-revalidate"><meta http-equiv="expires" content="0">但是问题依旧。在网上查询到一种方法,采用window.open()方法的name参数,同样可以保证只弹出一个页面,然后在这个弹出页面进行操作。关于Window.open的参数小结(参书改编) 先看一个例子: [javascipt:]window.open("Webpage.asp?",Derek,"height=100,width=100,status=yes,toolbar=yes, menubar=no,location=no"); 此语句打开一个新窗口,页面为webpage.asp,参数为var,名字为Derek,高为100,宽为100,显示状态栏和工具条,不显示菜单和地址。 具体总结的各个属性参数如下: window = object.open([URL ][, name ][, features ][, replace]]]]) URL:新窗口的URL地址 name:新窗口的名称,可以为空 featurse:属性控制字符串,在此控制窗口的各种属性,属性之间以逗号隔开。 fullscreen= { yes/no/1/0 } 是否全屏,默认no channelmode= { yes/no/1/0 } 是否显示频道栏,默认no toolbar= { yes/no/1/0 } 是否显示工具条,默认no location= { yes/no/1/0 } 是否显示地址栏,默认no directories = { yes/no/1/0 } 是否显示转向按钮,默认no status= { yes/no/1/0 } 是否显示窗口状态条,默认no menubar= { yes/no/1/0 } 是否显示菜单,默认no sescrollbars= { yes/no/1/0 } 是否显示滚动条,默认yes resizable= { yes/no/1/0 } 是否窗口可调整大小,默认no width=number 窗口宽度(像素单位) height=number 窗口高度(像素单位) top=number 窗口离屏幕顶部距离(像素单位) left=number 窗口离屏幕左边距离(像素单位) 其中name参数用来在以后使用的html链接的target属性时引用这个窗口(用来在以后使用的html链接的target属性时引用这个窗口,在弹出页面使用<base target="name">)之外,还可以是以下参数_blank 表示新开一个窗口,_parent表示父框架窗口,_self表示覆盖该窗口,xxx表示覆盖名字为xxx的窗口(每个窗口都可以给他命名)

时间: 2024-08-02 16:22:29

切换浏览器内核是否会导致session丢失,如何解决这个问题?的相关文章

PHP:IE下的iframe跨域导致session丢失问题解决方法

今天搞的一个登录页面,被别的网站用iframe嵌进去后,死活无法登录(只在IE中存在这种情况). 很明显,session无法被保存.但是直接在地址栏打开那个登录页面,一切都正常啊.真是奇怪啊. 在网上搜索了一下.发现这个问题还真有不少人提及到.最后的解决方法是在那个登录页面里加上以下代码: 代码如下: <span style="font-family:Microsoft YaHei; font-size:14px">header('P3P: CP="ALL ADM

PHP关于IE下的iframe跨域导致session丢失问题解决方法_php技巧

今天搞的一个登录页面,被别的网站用iframe嵌进去后,死活无法登录(只在IE中存在这种情况). 很明显,session无法被保存.但是直接在地址栏打开那个登录页面,一切都正常啊.真是奇怪啊. 在网上搜索了一下.发现这个问题还真有不少人提及到.最后的解决方法是在那个登录页面里加上以下代码: 复制代码 代码如下: <span style="font-family:Microsoft YaHei; font-size:14px">header('P3P: CP="AL

asp.net session丢失的解决方法

现在我就把原因和解决办法写出来. ASP.NET Session丢失原因: 由于Asp.net程序是默认配置,所以Web.Config文件中关于Session的设定如下: < sessionState mode='InProc' stateConnectionString='tcpip=127.0.0.1:42424' sqlConnectionString='data source=127.0.0.1;Trusted_Connection=yes' cookieless='true' time

asp.net session丢失的解决方法小结_实用技巧

现在我就把原因和解决办法写出来. ASP.NET Session丢失原因: 由于Asp.net程序是默认配置,所以Web.Config文件中关于Session的设定如下: < sessionState mode='InProc' stateConnectionString='tcpip=127.0.0.1:42424' sqlConnectionString='data source=127.0.0.1;Trusted_Connection=yes' cookieless='true' time

iis7中session丢失的解决方法小结_win服务器

问题描述: Windows Server 2008 +IIS +ASP.net +SQLServer2008搭建的内部WEB系统. 用户Session总是丢失,可能是IIS的不稳定性将导致Session频繁丢失. 用的是Session=SQLSEVER,即把Session保存到数据库. 解决方法: 1,在命令行进入如下地址(InstallSqlState.sql文件目录) cd "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" 2,运行如下

ASP.NET Session丢失原因解决方法

由于asp教程.net程序是默认配置,所以web.config文件中关于session的设定如下: < sessionstate mode='inproc' stateconnectionstring='tcpip=127.0.0.1:42424' sqlconnectionstring='data source=127.0.0.1;trusted_connection=yes' cookieless='true' timeout='60'/> 我们会发现sessionstate标签中有个属性

Session丢失的解决办法小结_win服务器

SessionState 的Timeout),其主要原因有三种 一:有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法. 二:程序内部里有让Session掉失的代码,及服务器内存不足产生的. 三:程序有框架页面和跨域情况. 第一种解决办法是:使杀病毒软件屏蔽扫描Web.Config文件(程序运行时自己也不要去编辑它) 第二种是检查代码有无Session.Abandon()之类的. 第三种是在Window服务中将ASP.NET State Service

Windows下Apache + PHP SESSION丢失的解决过程全纪录_php实例

今天的工作是迁移一个PHP站点至新服务器. 创建一台Windows Server 2008虚拟机,并在其上停掉net stop http服务(避免争抢80端口),安装配置 Apache + PHP,迁移站点至新服务器,站点正常打开,Apache + PHP运行正常,连接MySql Server正常,一切都美好,本想着半小时完成的工作,紧接着噩梦开始了. 该站点使用单点登录,登录过程包含JavaScript异步操作,包含SOAP调用Web Service.登录却直接跳回了登录页面,没有任何错误提示

Session丢失的解决办法小结

最近在做ASP.NET项目时,测试网站老是取不出Session中的值,在网上搜索了一下,找到一些解决方法,记录在这里.最后使用存储在StateServer中的办法解决了问题. SessionState 的Timeout),其主要原因有三种. 一:有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法. 二:程序内部里有让Session掉失的代码,及服务器内存不足产生的. 三:程序有框架页面和跨域情况. 第一种解决办法是:使杀病毒软件屏蔽扫描Web.Confi