Fakir
в работе над собой
Проблема в передаче cookie между поддоменами
Приветствую!
Исходные:
Два поддомена one.domain.ru и too.domain.ru.
На домене one.domain.ru скрипт ct.php:
На домене too.domain.ru скрипт ct.php:
В случае работы с браузерами FireFox и Opera сессия между доменами передается. При работе в IE (6.0.2900) сессия не устанавливается вообще, и соответственно при переходе на too.domain.ru не передается.
Заголовки (при работе с IE):
Запрос #1
GET /ct.php HTTP/1.1
Accept: */*
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 4.9 (build 01863); .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Host: one.domain.ru
Connection: Keep-Alive
HTTP/1.1 200 OK
Date: Thu, 15 Nov 2007 23:11:30 GMT
Server: Apache
X-Powered-By: PHP/5.1.6
Set-Cookie: PHPSESSID=ml07irnvh26ttcrbrt5h0n0af1; path=/; domain=.domain.ru
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 71
Connection: close
Content-Type: text/html; charset=WINDOWS-1251
Запрос #2 (обновляем)
GET /ct.php HTTP/1.1
Accept: */*
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 4.9 (build 01863); .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Host: one.domain.ru
Connection: Keep-Alive
HTTP/1.1 200 OK
Date: Thu, 15 Nov 2007 23:11:33 GMT
Server: Apache
X-Powered-By: PHP/5.1.6
Set-Cookie: PHPSESSID=savoqikgh90annb71bma08b5h1; path=/; domain=.domain.ru
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 71
Connection: close
Content-Type: text/html; charset=WINDOWS-1251
Замечаем что PHPSESSID сервер возвращает другой. Вопрос: Где можно покопать? Не работает только в IE!
Приветствую!
Исходные:
Два поддомена one.domain.ru и too.domain.ru.
На домене one.domain.ru скрипт ct.php:
PHP:
ini_set("display_errors",1);
ini_set("session.cookie_domain",".domain.ru");
session_start();
print_r($_COOKIE);
echo '<a href="http://too.domain.ru/ct.php">too.domain.ru</a>';
PHP:
ini_set("display_errors",1);
ini_set("session.cookie_domain",".domain.ru");
session_start();
print_r($_COOKIE);
Заголовки (при работе с IE):
Запрос #1
GET /ct.php HTTP/1.1
Accept: */*
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 4.9 (build 01863); .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Host: one.domain.ru
Connection: Keep-Alive
HTTP/1.1 200 OK
Date: Thu, 15 Nov 2007 23:11:30 GMT
Server: Apache
X-Powered-By: PHP/5.1.6
Set-Cookie: PHPSESSID=ml07irnvh26ttcrbrt5h0n0af1; path=/; domain=.domain.ru
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 71
Connection: close
Content-Type: text/html; charset=WINDOWS-1251
Запрос #2 (обновляем)
GET /ct.php HTTP/1.1
Accept: */*
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 4.9 (build 01863); .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Host: one.domain.ru
Connection: Keep-Alive
HTTP/1.1 200 OK
Date: Thu, 15 Nov 2007 23:11:33 GMT
Server: Apache
X-Powered-By: PHP/5.1.6
Set-Cookie: PHPSESSID=savoqikgh90annb71bma08b5h1; path=/; domain=.domain.ru
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 71
Connection: close
Content-Type: text/html; charset=WINDOWS-1251
Замечаем что PHPSESSID сервер возвращает другой. Вопрос: Где можно покопать? Не работает только в IE!
Поставить куку для другого домена нельзя, только для домена в котором ставиться кука, или для корневого, как в моем случае.