我正在使用Symfony 2创建一个facebook应用程序。很多人都知道IE包含iframe会丢失会话!
这个问题可以通过标题解决('P3P:CP =“CAO PSA OUR”');
所以我的问题是发送标题('P3P:CP =“CAO PSA OUR”');在Symfony 2上。
我在行动中尝试了这个:
$response = new Response($content);
$response->headers->set('P3P:CP', 'CAO PSA OUR');
return array($response);
如果没有成功,会话就会丢失!!!
有想法这样做吗?
答案 0 :(得分:4)
我找到了解决办法!
只需替换它:
$response->headers->set('P3P:CP', 'CAO PSA OUR');
人:
$response->headers->set('P3P', 'CP="CAO PSA OUR"');
或者更好,就像WojciechBańcer所说:
$response->headers->set('P3P', 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
实际上,你必须在第一个参数之前传递所有单词:,其余的在第二个参数中传递!
答案 1 :(得分:3)
IE可能因各种原因而丢失会话/ cookie。
最常见的一个,你命名 - 缺少P3P标题(你应该检查一些Firebug工具,以确保你发送它)。
第二个原因是域名中的下划线(例如my_app.something.com)。这是因为名称中的下划线违反了RFC:http://www.ietf.org/rfc/rfc2396.txt。如果我没记错的话(我在2年前遇到类似的bug),也可能是你的symfony cookie名称有下划线的情况。
我听说的第三个最常见的原因与时间有关,但我自己从未体验过这一点。您可以在本文中阅读相关内容:http://genotrance.wordpress.com/2006/11/23/session-cookies-rejected-by-internet-explorer/