Вход в Ajax с несколькими доменами (тот же сервер) - PullRequest
1 голос
/ 20 марта 2012

У меня 2 приложения. App1 - это старый самодельный php-проект, не использующий Zend. А App2 - это небольшое Zend-приложение.

http://test.pmueller.dev.xiag.ch/ Это только для тестов. В этом случае он представляет приложение 1.

Если вы нажмете «Показать» в информационном бюллетене 313, вы войдете в систему и увидите информационный бюллетень. Это обычный междоменный почтовый звонок. Логин был сделан в фоновом режиме. Скопируйте и вставьте этот URL.

Теперь удалите куки. Если вы перезагрузите вкладку, вы получите сообщение об ошибке, потому что вы больше не вошли в систему.

Что не получается, так это:

Вы должны войти в систему, нажав на кнопку входа. Это означает, что вы сначала нажимаете кнопку. Затем откройте новую вкладку и снова перейдите к информационному бюллетеню.

Как видите, вход через ajax не работает. Зачем? Я действительно не мог понять, почему он устанавливает мой cookie с обычным сообщением, но это не так, когда я выполняю ajax-вызов.

1 Ответ

1 голос
/ 23 марта 2012

Сделайте так, чтобы оба обработчика сеанса приложения использовали один и тот же домен. Так что если у вас есть app1.foo.bar.com и app2.foo.bar.com, вы должны делать что-то подобное в обоих своих приложениях:

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

Одно место для этого кода - Bootstrap, но в любом месте, прежде чем вы вызовете Zend_Auth::getInstance()->hasIdentity() или начнете сеанс, все должно быть в порядке.

...