从第三方站点上的bookmarklet加载iframe将终止CakePHP会话

从第三方站点上的bookmarklet加载iframe将终止CakePHP会话,php,perl,session,cakephp,apache2,Php,Perl,Session,Cakephp,Apache2,我试图从书签中弹出一个iframe,其内容来自我的测试应用程序。这个测试应用程序做的不多,但是让我登录并设置一些会话变量。首先,我使用Perl的Catalyst框架开发了它,效果非常好。我可以在某个窗口或iframe中登录到测试应用程序,这样就可以在第三方网站上保持会话正常 现在我需要使用CakePHP框架在PHP中执行类似的操作。由于某些原因,当在第三方站点上打开iframe时,在每个浏览器中会话都会消失。如果在开发站点(iframesrc所在的同一站点)上启动,则它在登录会话时可以正常打开。

我试图从书签中弹出一个iframe,其内容来自我的测试应用程序。这个测试应用程序做的不多,但是让我登录并设置一些会话变量。首先,我使用Perl的Catalyst框架开发了它,效果非常好。我可以在某个窗口或iframe中登录到测试应用程序,这样就可以在第三方网站上保持会话正常

现在我需要使用CakePHP框架在PHP中执行类似的操作。由于某些原因,当在第三方站点上打开iframe时,在每个浏览器中会话都会消失。如果在开发站点(iframesrc所在的同一站点)上启动,则它在登录会话时可以正常打开。CakePHP应用程序正在标准的Ubuntu Apache 2安装上运行

我发现一些文档讨论IE中的P3P头导致了这类问题,但a)所有浏览器中都有,b)我用Fiddler观看并看到P3P头被发送

我还没有通过Catalyst应用程序观察流量,看看有什么不同。我想这是我的下一步,但坦率地说,我已经投入了足够的时间。我想问问周围,看看能发现什么

谢谢,
尼克

这是我特意发现的。CakePHP在core.php中有一些设置,可以为会话处理增加额外的安全性

本页有一些好的提示:

基本上我是这样做的:

core.php

Configure::write('Session.save', 'my_session_handler');
ini_set('session.referer_check', ''); 
my\u session\u handler.php

Configure::write('Session.save', 'my_session_handler');
ini_set('session.referer_check', '');