Я не вижу SESSION VARS при вызове субдоменного скрипта с помощью Jquery (ajax) - PullRequest
1 голос
/ 22 мая 2011

У меня проблема.Надеюсь, вы поможете мне решить эту проблему.

Я создаю чат с LONG POLLING.Чтобы не трогать (не ставить в очередь) запросы Ajax основного домена (нет сообщений), я должен был поместить свой скрипт для длинных опросов в поддомен.Таким образом, у меня есть 2 "домена"

foo.cz channel.foo.cz

Я не против какой-либо политики единого происхождения прямо сейчас, как я положил

header("Access-Control-Allow-Origin: *");

вверху этого скрипта.Я также использую

ini_set('session.cookie_domain', '.foo.cz');

во всех сценариях (отправка, получение, чат).

Для отладки у меня есть это в моем channel.foo.cz/getNews.php:

print_r($_SESSION);
print_r($_COOKIE);
die();

Моя проблема:

  1. Я делаюзагрузить чат-комнату
  2. Ajax (jquery) запросы channel.foo.cz/getNews.php
  3. getNews.php возвращает это:

    array () array ()

  4. Похоже, что куки и сеанс не настроены.Но!Если я загляну в свой браузер файлов cookie FF, я увижу, что домен для этих файлов cookie, установленных в chatRoom, имеет вид .foo.cz
  5. Если я попытаюсь скопировать URI запроса ajax и вставить его в URL браузера, онвозвращает мне

    массив ([имя пользователя] => мартин) массив ([SESSID] => some1D65a4s6d54asd)

Как это возможно?Извините за длинный вопрос и спасибо за все ответы!

Ответы [ 2 ]

1 голос
/ 24 мая 2011

Я понял.Браузер ограничивает отправку файлов cookie в другой поддомен, поэтому я использовал iframe, который отправляет запрос на мой поддомен.Тем не менее, были некоторые проблемы, когда были исчезающие сессии.Решение?php.ini:

suhosin.session.cryptdocroot=Off

suhosin.cookie.cryptdocroot=Off
1 голос
/ 22 мая 2011

Вам нужно посмотреть на session_set_cookie_params третий параметр функции. Задает доменное имя, в котором действителен cookie с SID.

...