您的位置:首页 > 其它

框架session丢失(frameset)

2011-09-13 17:00 176 查看
1 问题描述

环境:两台服务器(A服务器,B服务器)

应用:两个应用(C系统,D系统)

其中C系统部署在A服务器,D系统部署在B服务器

D系统是要从C系统登录

D系统要从C系统Session取两个值到D系统session中



症状

如果您实现的 FRAMESET 其框架指向您的合作伙伴或在您的网络,内部网络上其他 Web 站点但使用不同的顶级域名,您可能会注意到在 Internet Explorer 6 中您尝试在这些框架中设置任何 Cookie 似乎丢失。 这是最常遇到作为一个 Active Server Pages (ASP) 或 ASP.NET Web 应用程序中的会话状态的丢失。 您尝试访问您希望存在,而返回一个空白字符串 Session 对象中的变量。

您还了解一个框架上下文中的这一问题如果您的网页使用域名系统 (DNS) 名称和 Internet 协议 (IP) 地址的使用之间交替。



2 问题解决



添加一个 response.addHeader("P3P","CP=CAO PSA OUR");

在D系统有这样一个logon .jsp

<%
String userid = (String) request.getParameter("userid");
String password = (String) request.getParameter("password");
session.setAttribute("userid", userid);
session.setAttribute("password", password);
System.out.println("userid" + userid);
System.out.println("password" + password);
out.print("Session var is " + session.getAttribute("TestVar"));
session.setAttribute("TestVar","Hello, world!");
response.addHeader("P3P","CP=CAO PSA OUR");
%>

在C系统只要调用



<iframe src="http://128.128.1.1:8080/Test/logon.jsp&userid=?&password=?"></iframe>

将userid和password取出来放进去即可。



如果没有 response.addHeader("P3P","CP=CAO PSA OUR"); 将会导致session丢失,在D系统取不到session值,虽然已经赋值进去





3 问题重现



重现该问题的步骤

1. 创建一个文件名称 TestFrameset.asp。

2. 点框架的一个文件到另一台计算机在您的网络上的 IP 地址的: <HTML>

<FRAMESET ROWS="100%,*">

<FRAME src="http://111.111.111.111/testFrame.asp"></FRAME>

<FRAME src="about:blank"></FRAME>

</FRAMESET>

</HTML>





3. on remote computer,like following example create TestFrame.asp: <HTML>

<BODY>

<%

Response.write "Session var is " & Session("TestVar")

Session("TestVar") = "Hello, world!"

%>

<BODY>

<FORM METHOD="POST">

<INPUT type="submit" value="Print TestVar">

</FORM>

</BODY>

</HTML>





4. 将移动到 TestFrameset.asp,然后单击 窗体提交 。

请注意,尽管它应该包含 Session("TestVar") 项打印为空,提交后的"Hello,世界 !"。



来自http://blog.csdn.net/ssqmeng/article/details/3223946
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: