2011-11-24 50 views
0

我正在用Symfony 2製作一個Facebook應用程序。許多人知道IE在包含iframe時會失去會話!關於Symfony 2,在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); 

沒有成功,會話會丟失!

有想法做到這一點嗎?

回答

4

我發現我的解決方案!像沃伊切赫Bańcer說

$response->headers->set('P3P', 'CP="CAO PSA OUR"'); 

或更好:

只需更換這一點:

$response->headers->set('P3P:CP', 'CAO PSA OUR'); 

通過

$response->headers->set('P3P', 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'); 

事實上,你必須通過第一個參數的所有單詞之前:,其餘的在第二個!

3

由於各種原因,IE可能會釋放會話/ cookie。

最常見的一種,你被點名了 - 缺少P3P頭(你應該有一些螢火蟲的工具檢查,以確保您要發送的話)。

第二個原因是在域名的下劃線(例如my_app.something.com)。這是因爲下劃線名稱是針對RFC:http://www.ietf.org/rfc/rfc2396.txt。如果我沒有記錯(我在2年前遇到類似錯誤),那麼當您的symfony cookie名稱有下劃線時也可能是這種情況。

第三個最常見的原因,我聽說是有關的時間,但我從來沒有經歷過這種自己。您可以在這篇文章中讀到它:http://genotrance.wordpress.com/2006/11/23/session-cookies-rejected-by-internet-explorer/