Zero108 124 03/04/10 07:21 Слетает авторизация при переходе из форума в галерею или блог.Проблема только в IE. Кто знает, что это может быть? Поделиться сообщением Ссылка на сообщение
Sannis 2 03/04/10 08:35 Настройки cookies.В адресе присутствует s=... в обоих или не в одном случае? Поделиться сообщением Ссылка на сообщение
Zero108 124 03/04/10 09:44 На сервере forum_test.a108.net в коренной директории висит тестовый скрипт на PHP. Мы не можем заставить его корректно работать с браузерами семейства IE. А с Оперой, например, работает отлично. Исходный код скрипта следующий: /headers.php<?setcookie( 'name', 'val' ); var_dump(getallheaders());var_dump($HTTP_COOKIE_VARS);?> Что скрипт должен делать:1) Записать в куки браузера переменную с именем "name" и значением "val".2) Вывести массив всех входящих HTTP-заголовков3) Вывести массив входящих куков. Скрипт доступен из сети по адресу: http://forum_test.a108.net/headers.phpПри запросе из IE, мой сниффер ловит исходящий от сервера заголовок с командой установки куков. Но последующий запрос по тому же адресу не передаёт эту переменную обратно серверу. Обмен следующий (не принципиальные теги заголовков я вырезаю) 1) Запрос IEGET /headers.php HTTP/1.1Host: forum_test.a108.net..... 2) Ответ сервера:HTTP/1.1 200 OKSet-Cookie: name=valConnection: close..... 3) Второй запрос IE (обновить страницу)GET /headers.php HTTP/1.1Host: forum_test.a108.net…. И т.д. Нет переменной из куков в запросе.Для сравнения HTTP-заголовки при такой же операции, но на другом домене. Скрипт при этом идентичный байт в байт.Адрес: http://semnt.ru/headers.php 1) Запрос IEGET /headers.php HTTP/1.1Host: semnt.ru….2) Ответ сервера:HTTP/1.1 200 OKSet-Cookie: name=val… 3) Второй запрос IE (обновить страницу)GET /headers.php HTTP/1.1Host: semnt.ruCookie: name=val Есть переменная "name" со значением "val".При обмене обоих серверов с браузером Opera – Куки передаются нормально (так же как в последнем примере).Не можем понять, в чём причина. Почему на одинаковые команды из HTTP-заголовков браузер реагирует по разному, и в одном случае записывает переменную, а в другом нет? Хотя разница в запросах есть, но в других тегах.Долбились в разные параметры функции setcookie – по барабану. Может подскажешь нам чего) Полный листинг:IE <=> http://forum_test.a108.net/headers.php1) Запрос IEGET /headers.php HTTP/1.1Accept: */*Accept-Language: ruAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)Host: forum_test.a108.netConnection: Keep-Alive 2) ОтветHTTP/1.1 200 OKDate: Thu, 04 Mar 2010 07:35:43 GMTServer: Apache/2.2.3 (CentOS)Accept-Ranges: bytesX-Powered-By: PHP/4.4.9Set-Cookie: name=valConnection: closeTransfer-Encoding: chunkedContent-Type: text/html; charset=windows-1251 3) Второй запрос IEGET /headers.php HTTP/1.1Accept: */*Accept-Language: ruAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)Host: forum_test.a108.netConnection: Keep-Alive IE <=> http://semnt.ru/headers.php1) Запрос IEGET /headers.php HTTP/1.1Accept: */*Accept-Language: ruAccept-Encoding: gzip, deflateIf-Modified-Since: Thu, 04 Mar 2010 07:41:27 GMT; length=542User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)Host: semnt.ruConnection: Keep-Alive 2) Ответ сервераHTTP/1.1 200 OKServer: nginx/0.7.64Date: Thu, 04 Mar 2010 07:41:51 GMTContent-Type: text/html; charset=windows-1251Transfer-Encoding: chunkedConnection: keep-aliveX-Powered-By: PHP/5.2.12Set-Cookie: name=valContent-Encoding: gzipExpires: Thu, 01 Jan 1970 00:00:01 GMTLast-Modified: Thu, 04 Mar 2010 07:41:51 GMT 3) Второй запрос IEGET /headers.php HTTP/1.1Accept: */*Accept-Language: ruAccept-Encoding: gzip, deflateIf-Modified-Since: Thu, 04 Mar 2010 07:41:51 GMT; length=542User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)Host: semnt.ruConnection: Keep-AliveCookie: name=val Поделиться сообщением Ссылка на сообщение
Sannis 2 03/04/10 10:34 Потому что для поддоменов в setcookie нужно указывать домен, причём wildcard: .domen.ruСтолько написали, протестовали, а документацию по функции и FAQ про куки на ibr не прочитали, ай-ай-ай. Поделиться сообщением Ссылка на сообщение
Zero108 124 03/04/10 12:47 Проблема решена. Подробнее здесь. Поделиться сообщением Ссылка на сообщение