我正在为客户制作一个网络应用程序,该客户希望将登录信息放在他们网站上的iframe内。在成功登录时,我们希望在新的弹出窗口中打开应用程序,但似乎登录的会话仅保留在iframe内部,而不是保留在主窗口或弹出窗口中。这只是IE中的一个问题,而不是任何其他浏览器。
有没有办法实现这个?
流程是这样的:
编辑: Fiddler显示iframe中发生的事情附加到一个iexplore进程,主窗口中发生的事情附加到另一个。这显然是问题所在,可以解决吗?
答案 0 :(得分:3)
在iframe中设置Cookie,从其他域加载页面有时可能会导致一些奇怪的问题。如果cookie不起作用,很可能,您的登录也无法正常工作。 为了解决前一种情况,我必须做的是在IIS / Code中添加一个自定义的http标头,这突然使一切正常。
示例C#代码:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("p3p", "CP=\"CAO PSA OUR\"");
}
答案 1 :(得分:1)
尝试使用Fiddler检查登录页面(在iframe中)创建的cookie是否发送到新打开的弹出窗口。如果没有,则可能是IE中的一个设置可以防止这种情况发生。
修改:要查看Fiddler中的Cookie,请转到检查员标签,然后转到标头。在Request header(up),您将看到从服务器发送到浏览器的cookie。在Response header(向下),您将看到从浏览器发送到服务器的cookie(它们应该被发送回浏览器以便后续请求)。