internet explorer - 在IE9中没有在iframe中发送Cookie




internet-explorer cookies (3)

如果有人试图为.NET应用程序解决这个问题

如Carlos所述,添加一个P3P标题

HttpContext.Response.AddHeader("p3p", "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");

编辑:更好的是,如果你想把它放在Controller中,只需添加以下属性即可

public class IEP3PHeaderAttribute : FilterAttribute, IResultFilter
{
    public void OnResultExecuting(ResultExecutingContext filterContext)
    {
        // check if the user is using a IE based browser, add a p3p header if true and hasn't already been added
        if (HttpContext.Current.Request.Browser.Browser.ToUpper().Contains("IE"))
        {
            if (System.Web.HttpContext.Current.Response.Headers["p3p"] == null)
            {
                HttpContext.Current.Response.AddHeader("p3p", "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");    
            }
        }
    }

    public void OnResultExecuted(ResultExecutedContext filterContext)
    {
    }
}

然后在你的控制器中,例如HomeController

[IEP3PHeader]
public class HomeController
{
   public ActionResult DoSomething() {};
   public ActionResult DoSomethingElse() {};
} 

首先,我在发布这个问题之前做过一些研究,所以我知道有关它的P3P政策MSDN文章 。 据我所知,这项政策主要(如果不是)适用于IE6。 我的具体问题是IE9。 此外,我做的第一件事是建立一个政策(它的工作原理,因为它在IE的隐私报告中显示了摘要)。

我的测试用例如下:我有一个包含iframe的页面。 iframe文档为当前域设置会话cookie(完整的HTTP标头: Set-Cookie:sid=2b5540e0e4f27075ca4709851700137d; expires=Tue, 28-Jun-2011 07:27:41 GMT; path=/ )路径,在一周内到期。 没有问题,这已经在生产中运行(独立,而不是在iframe中)一段时间了。

问题是:iframe文档有一些javascript首先执行一些HTTP请求(由jQuery完成),然后重定向用户(通过更改document.location属性)。 请求发送cookie,但重定向不会

我已经在IE中捕获了网络事件,我可以找到的两种请求之间的唯一区别是发起者:XHR由JS库完成,另一个是通过单击完成。 但是我真的怀疑点击不会发送cookie。

我想知道为什么我的cookie没有发送,谷歌分析cookie被发送,所以它应该是可能的。

更新:这绝对是一个隐私区域问题:当将IE中的隐私栏设置降低到全部时,它可以正常工作。 其他设置都失败了。

我已经创建了一个精确的测试床 :这是正在使用的实际iframe。 要测试它,你必须填写荷兰邮政编码(抱歉;)),使用的占位符很好:1234 AB和1.提交后你得到一个模态,当它完成后你应该被重定向到结果页面。 在IE中,重定向显示与您开始时完全相同的页面(因为没有设置cookie)。


您是否尝试过添加P3P标头? 这并不像那篇文章那么难。

例如在PHP中,只需在php文件的顶部添加此标头:

<?php
    header('p3p: CP="NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM"');
?>

这个确切的问题,但在不同的背景下工作: Facebook应用程序适用于所有浏览器,但不适用于IE8






iframe