注册 登录
编程论坛 ASP技术论坛

奇怪的丢失session值(困绕一天的问题终于解决了!)

不惑 发布于 2007-09-04 16:37, 1655 次点击

我有二个网站,在一个网站中有一页面使用了框架,框架中的一部分为另一个网站的内容,那个网站有用户功能,在登陆后保存用户信息的session会丢失,而且只在框架中丢失,不用框架时它不会丢失(我单独登陆B服务器时,什么操作它都不丢失)。
并且我用与调试的二台服务器不会丢失。
可能我说得有点乱,谁知道?
比如我有A服务器和B服务器,是公网的。在A上有一页面中的框架中有B上的内容,B上是有用户的,在登陆后使用session保存和判断用户信息。但这个SESSION会在登陆后,只要换一个页面它就丢失,也就是登陆的页面保存了它,它当时是有的,但只要切换过页面,它就丢失。
而我有二台测试用的服务器a,b它们不在公网,我一样在a的框架中含有b的内容,也一样是有用户,也一样是用session来保存信息,但不会丢失。
郁闷啊!!!!
为什么放到公网上就要丢失啊!!!!

[此贴子已经被作者于2007-9-4 20:01:54编辑过]

8 回复
#2
gupiao1752007-09-04 16:57

看了不是非常明白,不过我猜可能是SESSION的问题吧,SESSION的生存时间和空间范围好象是不能跨机的!只在本机和相应时间内有效!

不管怎么样,帮你顶个帖!

#3
不惑2007-09-04 17:01

也许是这么回事吧

#4
ayue2222007-09-04 17:25
session不能是跨域的..
#5
不惑2007-09-04 17:32

在框架内没有改变过啊, 没有进行跳转过,只是在一个框架内吧了,这个框架内一直都是那个网站,没有跳出域.
为什么我测试的又可以呢?

#6
hmhz2007-09-04 18:24
使用框架就等于与本站阁开了,框架内的地址其实是连接全地址

比如你是这样的框架 <iframe frameborder="0" scrolling="no" src="123.asp"></iframe>

实际上他的性质就是 <iframe frameborder="0" scrolling="no" src="http://www.XXXX.com/123.asp"></iframe>

所以,只要你使用了框架就等于是跨域了
#7
不惑2007-09-04 19:47

确实如各位所说(这个我已经通过显示session.sessionID得到证实,因为每换一个页面这个ID都不同的),但我还是想出了骗过系统的办法

[此贴子已经被作者于2007-9-4 19:50:54编辑过]

#8
不惑2007-09-04 19:48
不过为了骗过系统,我还是看了不少资料
骗过的原理我说一下吧,下次大家可能会用到:
系统是认一个一个程序范围的,一般来说,一个IE默认为一个程序范围.
框架因为有了跨域的内容,所以它首先默认的是框架程序本身的程序范围,这样使得框架内的程序范围得不到确认.
为了让这个IE默认为框架内的程序范围,所以我使用了多次跳转.
首先,跳出本框架,进入一个无框架的需要session值的网站页面,并在这个页面中生成一个session以便系统自动生成一个sessionID,然后又跳回到有框架的页面.因为系统已经为这个IE生成了一个sessionID,所以只要不关掉这个IE,系统一直以为这个IE是本程序范围的.这样,再次生成的session值就得以在这个ID中生存下来.
也就达到了骗过系统的目的.
再补充一点,二次跳转使用了不同的方式,原因是我需要把框架外的信息丢弃,而要保存框架内的信息.
而不同的跳转方式会丢弃或保存跳转前的信息的.

[此贴子已经被作者于2007-9-4 20:25:28编辑过]

#9
gupiao1752007-09-04 21:31
讲得有点深奥哦,不太容易理解!
你既然有心讲解和大家分享,干吗不把你的例子发出来和大家共享一下呢?何必说这么多呢,我们又不是不会看代码的,大家说对吧?呵..
1