2010-01-06 53 views
0

我正在構建一個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:

  1. 下面的代碼添加到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\"");
    }

  2. 添加了下面的代碼行到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\"");

這些解決方案都不適用於我。我錯過了什麼?

回答

1

如果你希望一個子幀能夠使用cookies,那麼添加P3P頭文件是一個最佳實踐,但是你應該查看服務器日誌以找出爲什麼HTTP/500首先得到生成,因爲它是服務器/框架,這是提高了錯誤。

您可能還需要在IE中關閉友好錯誤(見工具/ Internet選項/高級)

+0

背後的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

+0

我將不勝感激任何幫助或建議 – Kumar 2010-01-07 07:25:22

+0

不,這是不正確的。 HTTP/500是一個SERVER錯誤,而不是客戶端錯誤。 IE瀏覽器在缺少cookie時不會拋出錯誤。 在Fiddler2中觀察您的流量並查看服務器的響應頭是什麼;張貼在這裏。另請參閱HTTP/500消息的內容。 – EricLaw 2010-01-07 15:30:08