我一段时间以前问了这个问题(链接),发现IE会在iframe中阻止跨域的cookie,除非你设置一个p3p政策。目前为止,在ie中,p3p修复已经非常好用。然而,现在我们在safari中也遇到了同样的错误。
我找到了一篇有关safari不同p3p政策的文章。我添加了这段代码来设置p3p政策,但是我仍然收到“请求验证令牌”错误信息。
public static void SetP3PCompactPolicy()
{
HttpContext current = HttpContext.Current;
if (current.Request.UserAgent.ToLower().IndexOf("safari") >= 0)
HttpContext.Current.Response.AddHeader("p3p", "CP=\"IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA\"");
else
HttpContext.Current.Response.AddHeader("p3p", "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
}
我不确定这些内容的含义,但它们在Safari(5)上无法运行。
另外,当我遇到服务器错误时,所有信息都会发送给我一个报告,包括所有的HTTP头。但是在这些错误中,P3P头并未传递过来。我不确定这是否是设计上的问题,或者这是否是正在发生的问题的指示器。