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
这是您的试验台的正确复制品吗? http://www.coderun.com/ide/?w=EyTizeGw9kKgHjwNp3xiPw
我在IE9中找到了cookie,我错过了什么?