我正在构建一个ASP.NET 3.5应用程序,其中我有一个页面可以在iframe中的另一个域中加载另一个页面。下面是为Default.aspx的页:iframe在Internet Explorer中的第三方cookie问题
<asp:Content ID="Content1" ContentPlaceHolderID="mainContent" runat="server">
<iframe src="isite.aspx" runat="server" width="100%" height="100%" scrolling="auto">
</iframe>
</asp:Content>
下面是在iframe页面isite.aspx:
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Untitled Page</title>
</head>
<body style="margin: 0; text-align: center;">
<form id="Form1" name="frmSubmit" action="https://mysite.com/Login.asp"
method="POST" runat="server">
<span style="font-family: Arial">
<asp:ImageButton ID="ImageButton1" runat="server" PostBackUrl="https://mysite.com/Login.asp" ImageUrl="/ajax-loader.gif" /> Please wait...
<br />
</span>
<input type="hidden" name="txtUserName" size="30" maxlength="50" value="admin"
onkeypress="Javascript:CheckKeyPress('ID')"/>
<input type="hidden" name="pwdPassword" size="30" maxlength="25" value="password"
onkeypress="Javascript:CheckKeyPress('P')"/>
</form>
</body>
</html>
下面是isite.aspx.cs页:
protected void Page_Load(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "click", "<script language=javascript>document.getElementById('" + ImageButton1.ClientID + "').click();</script>");
}
这在Firefox,Safari和Chrome中可以正常工作,但它可以在IE 7中工作或者8.在IE中,它给了我一个HTTP 500错误页面。它做一些研究之后,我想通它在IE浏览器cookie中的问题,并试图以下soutions:
下面的代码添加到Global.asax中:
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("p3p", "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
}添加了下面的代码行到Page_Init和的Page_Load事件
HttpContext.Current.Response.AddHeader("p3p", "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
这些解决方案都不适用于我。我错过了什么?
背后的500错误的原因是,IE是试图找到会话cookie,它是无法找到。相同的代码在非IE浏览器中工作,我使用萤火虫工具检查了响应头,下面是响应 Cache-Control \t private Content-Type \t text/html;字符集= UTF-8 服务器\t微软-IIS/7.5 P3P \t CP = “CAO PSA OUR”,CP = “NOI DSP COR NID ADM DEV PSA OUR IND UNI PUR COM NAV INT STA” X-ASPNET-版\t 2.0.50727 X供电,通过\t ASP.NET 日期星期四2010年1月7日7时十八分46秒GMT 的Content-Length 正如你可以看到P3P信息是那里的头,但它仍然dosent工作在IE – Kumar 2010-01-07 07:24:17
我将不胜感激任何帮助或建议 – Kumar 2010-01-07 07:25:22
不,这是不正确的。 HTTP/500是一个SERVER错误,而不是客户端错误。 IE浏览器在缺少cookie时不会抛出错误。 在Fiddler2中观察您的流量并查看服务器的响应头是什么;张贴在这里。另请参阅HTTP/500消息的内容。 – EricLaw 2010-01-07 15:30:08