打开一个新窗口创建一个新会话
Opening a new window create a new session
我们正在将一个基于web的软件从Windows XP和ie6升级到Windows 7和ie9。
此外,webbrowser对象在WPF应用程序中使用。
我们现在有一个奇怪的行为,当打开一个带有url的窗口时(使用像window.open(url)这样的指令),ASP会话"丢失",新窗口与一个新的从头开始的会话一起工作。
我通过避免无用的窗口打开来解决这个问题,而是修改当前窗口的位置。但是我想知道为什么会有这种行为!
你有什么线索吗?
谢谢。
这可能是由于您的域名简单不同,如果您正在运行www.yoursite.com,但窗口指向yoursite.com,那么将创建一个新的会话。很难缠,所以要小心。
此外,您可能在页面的某个地方有一些调试代码,这可能会导致很多头痛,例如清除会话变量以进行测试。还有其他需要检查的东西,虽然可能性不大,但你永远不会知道。
假设您的导航都指向同一个域,那么另一个原因可能是进程的切换。从IE8开始,IE"chrome"和标签内容被分成两个进程。此外,IE还可以为不同窗口和选项卡中的内容创建多个内容进程。
如果你的应用程序托管了一个浏览器控件,然后启动了一个完整的IE窗口,那么很有可能你的新URL是由另一个进程(iexpose .exe)而不是你的应用程序进程请求的。因此,请求无法访问会话cookie,因此会话看起来"丢失"。
(值得注意的是,同一进程树中的多个iexplorer .exe进程实例具有相互共享会话cookie的方法)
我想你可能有同样的问题,这个答案解决。从本质上讲,这可能是由于您正在使用的特定计算机上的IE中的安全区域错误。正如其他人所注意到的,我可以重申,只要域名没有改变,会话就会被带入javascript打开的其他IE(6,7,8,9)窗口。
祝你好运!
参考资料:
- MSDN文档
- W3Schools
当你打开一个新窗口使用javascript作为默认IE,创建一个新的窗口,以及不相同的会话和历史记录。如果你从javascript新窗口获得最后一个引用,那么在主流浏览器中它将是空的。
你可以保留你的会话历史,如果你的窗口。在锚点对象内触发Open函数:
<script>
function windowOpen() { window.open("my_page.asp","_blank"); };
</script>
<a href="javascript:windowOpen();">my link</a>
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- javascript处理一个对象数组以获得一个新的对象数组
- 为什么我们在ES2015中需要一个新的for循环结构,而我们已经有了for、forEach
- 如何通过Primefaces3.5使用JSF2.0验证并在成功的情况下打开一个新的选项卡
- 如何拆分一个整数和产生的所有数字来创建一个新数字
- 一个按钮,点击后会生成一个新的文本框?-Javascript
- 如何打开一个新窗口或选项卡,并将其提供给javascript执行
- window.open:是否可以通过修改DOM来打开一个新窗口
- 返回一个新函数,而不是工厂中的对象
- 从分析类传递现有对象,否则创建一个新对象
- JavaScript-通过类似的属性查找对象,并将其推送到一个新的数组中
- 使一个新元素在某个时间出现
- 当我添加一个新数字时,如何获得一些数字的即时平均值
- 根据对多个数组唯一的元素创建一个新数组
- 如何创建一个新的<李>带有复选框或<a>在里面
- 打开一个新窗口并更改其父窗口'的内容
- 使用javascript/jquery从现有数组中创建一个新数组,该数组保存项目存在的次数
- 打开一个新窗口创建一个新会话
- 强制开始一个新的会话在谷歌分析从html电子邮件
- 为什么刷新页面时会得到一个新会话(我在 save() 之后创建了会话)