В приложении, которое я пишу, используя комбинацию сред разработки и языков, мне нужно получить доступ к cookie из двух разных поддоменов, каждый на отдельном хосте.
Файл cookie устанавливается на www.mydomain.com
с использованием следующего кода PHP, и я пытаюсь получить к нему доступ с distant.mydomain.com
на отдельном хосте.
setcookie('token', base64_encode(serialize($token)), time()+10800, '/', '.mydomain.com');
Я пытаюсь получить доступ к cookie из distant.mydomain.com
, используя следующий код:
if (isset($_COOKIE['token'])) { /* do stuff */ }
Проблема: distant.mydomain.com
не находит cookie. Только что упомянутый оператор if
возвращает false, даже если cookie существует.
Я подтвердил, что установленный файл cookie предназначен для mydomain.com
(проверив мои файлы cookie Firefox). Я не могу придумать причину, по которой это не сработает.
Используя тот же код setcookie
, у меня есть старое приложение, работающее исключительно на хосте www.mydomain.com
, и это приложение может получать доступ к cookie через домены. Это заставляет меня подозревать, что проблема связана с отдельными хостами.
На всякий случай, если уместна любая из следующих сведений:
- www.mydomain.com
- это IIS 6.0
- distant.mydomain.com
- это Apache 2.2.9
- Оба сервера используют PHP 5.2.x
- Оба сервера работают на Windows Server 2003
Если есть какая-либо дополнительная информация, которую я могу предоставить, чтобы лучше описать проблему, пожалуйста, сообщите мне!