跨域Ajax登录(相同服务器)

时间:2012-03-20 09:16:09

标签: jquery ajax zend-framework

我有2个申请。 App1是一些旧的自制php项目,不使用Zend。而App2是一个小Zend应用程序。

http://test.pmueller.dev.xiag.ch/这仅适用于测试。在这种情况下,它代表App1。

如果您点击时事通讯313中的显示,您将登录并查看时事通讯。这是一个正常的跨域调用。登录是在后台进行的。复制粘贴网址。

现在,删除cookie。如果您重新加载选项卡,则会因为您不再登录而收到错误。

以下内容失败:

点击登录按钮后,您应该登录。这意味着,您首先单击该按钮。然后,打开一个新标签,再次访问您的新闻通讯。

如您所见,通过ajax登录无效。为什么?我真的无法弄清楚为什么它会用普通的帖子设置我的cookie,但在进行ajax调用时却没有。

1 个答案:

答案 0 :(得分:1)

使两个应用程序的会话处理程序用户都在同一个域中。所以如果你有app1.foo.bar.com和app2.foo.bar.com,你应该在你的两个应用程序中做这样的事情:

Zend_Session::setOptions(array(
    'cookie_domain' => '.foo.bar.com'
));

此代码的一个位置是Bootstrap,但在您致电Zend_Auth::getInstance()->hasIdentity()或开始会话之前的任何地方都应该没问题。