PHP не сохраняет сессию, когда это вызов ajax - PullRequest
2 голосов
/ 08 сентября 2010

Привет всем ,
Я проверяю сервис для внутренних объявлений на нашем сайте ...
Мне нужно сохранить внутренний сеанс (PHP), чтобы узнать, какая реклама была показана, и некоторые другие средства защиты ...

Проблема заключается в том, что если я получаю доступ к API через веб-браузер GET или POST , он делает сеанс (и сохраняет cookie сеанса php), но если я использую jQuery.ajax() метод не сохраняет ...

Моя ссылка на тесты http://search.microdual.com
(это потому, что я хотел настроить поиск Google на своем ноутбуке: p)

Я предлагаю вам использовать firebug , чтобы взглянуть на код JavaScript . (PHP-код не нужен, потому что он работает на клики ...) Чтобы упростить отладку, я распечатываю на ответный массив json с сервера идентификатор сеанса в переменной {id_sessao:"..."} ...

Заранее спасибо,
Хосе Морейра

EDIT:

Заголовки с сервера:

Date    Wed, 08 Sep 2010 11:24:48 GMT
Server  Apache/2.2.8 (Ubuntu)
P3P CP="NOI NID ADMa OUR IND UNI COM NAV"
Cache-Control   private, must-revalidate
Access-Control-Allow-Orig...    *
Access-Control-Allow-Cred...    true
Access-Control-Allow-Meth...    OPTIONS, GET, POST
Access-Control-Allow-Head...    Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control
Set-Cookie  SN4b55935921bde=7ad280272050b4b44f17769909fd6f34; path=/ SN4b55935921bde=7ad280272050b4b44f17769909fd6f34; path=/
Keep-Alive  timeout=15, max=97
Connection  Keep-Alive
Transfer-Encoding   chunked
Content-Type    text/html; charset=UTF-8

Заголовки из запроса jQuery Ajax:

Host    www.microdual.com
User-Agent  Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; pt-PT; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
Accept  application/json, text/javascript
Accept-Language pt-pt,pt;q=0.8,en;q=0.5,en-us;q=0.3
Accept-Encoding gzip,deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  115
Connection  keep-alive
Content-Type    application/x-www-form-urlencoded; charset=UTF-8
Referer http://search.microdual.com/
Content-Length  29
Origin  http://search.microdual.com
Pragma  no-cache
Cache-Control   no-cache

Где находится элемент управления cookie в запросе jQuery Ajax?

1 Ответ

5 голосов
/ 08 сентября 2010

Возможно, проблема в том, что ваш родительский документ находится на search.microdual.com, а вы запрашиваете сценарий с www.microdual.com.Сеансовый cookie не передается по доменам.

Если вы не используете document.domain - я его нигде не вижу?- у вас также будет дополнительная проблема, связанная с тем, что вызов AJAX не выполняется из-за политики Single Origin .

.

установить домен cookie на .microdual.com, чтобы он работал в обоих поддоменах

перенести сеанс вручную в URL (?sessionid=xxxxx) и продолжить сеанс, используя session_id("xxxxx");.

поместить оба сценария в один и тот же поддомен (search.microdual.com)

Последний вариант будет самым простым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...