在Symfony 2上,在IE上失去与iframe的会话

时间:2011-11-24 17:05:06

标签: facebook internet-explorer session iframe symfony

我正在使用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);

如果没有成功,会话就会丢失!!!

有想法这样做吗?

2 个答案:

答案 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/