在第三方网站上加载来自bookmarklet的iframe会导致CakePHP会话失败

时间:2010-02-12 14:42:01

标签: php perl session cakephp apache2

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

现在我需要在PHP中使用CakePHP框架做类似的事情。出于某种原因,在第三方网站上打开iframe时,每个浏览器中的会话都会消失。如果它在开发站点(iframe src所在的同一站点)上启动,它会在登录会话中打开。 CakePHP应用程序在标准的Ubuntu Apache 2安装上运行。

我发现一些文档在IE中讨论了P3P标题导致了这些问题,但是a)它在所有浏览器中,并且b)我和Fiddler一起观看并看到了P3P标题被发送。

我没有看过来自Catalyst应用程序的流量,看看有什么不同。我想这是我的下一步,但坦率地说,我已经把足够的时间用于此了。以为我会四处询问,看看我能找到什么。

谢谢, 尼克

1 个答案:

答案 0 :(得分:2)

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

此页面有一些很好的提示:
http://bakery.cakephp.org/articles/view/how-to-bend-cakephp-s-session-handling-to-your-needs

基本上我这样做了:

<强> core.php中

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

<强> my_session_handler.php

ini_set('session.referer_check', '');