Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Zero108

Слетает авторизация

Рекомендованные сообщения

Слетает авторизация при переходе из форума в галерею или блог.

Проблема только в IE. Кто знает, что это может быть?

Поделиться сообщением


Ссылка на сообщение

Настройки cookies.

В адресе присутствует s=... в обоих или не в одном случае?

Поделиться сообщением


Ссылка на сообщение

На сервере 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) Запрос IE

GET /headers.php HTTP/1.1

Host: forum_test.a108.net

.....

 

2) Ответ сервера:

HTTP/1.1 200 OK

Set-Cookie: name=val

Connection: close

.....

 

3) Второй запрос IE (обновить страницу)

GET /headers.php HTTP/1.1

Host: forum_test.a108.net

….

 

И т.д. Нет переменной из куков в запросе.

Для сравнения HTTP-заголовки при такой же операции, но на другом домене. Скрипт при этом идентичный байт в байт.

Адрес: http://semnt.ru/headers.php

 

1) Запрос IE

GET /headers.php HTTP/1.1

Host: semnt.ru

….

2) Ответ сервера:

HTTP/1.1 200 OK

Set-Cookie: name=val

 

3) Второй запрос IE (обновить страницу)

GET /headers.php HTTP/1.1

Host: semnt.ru

Cookie: name=val

 

Есть переменная "name" со значением "val".

При обмене обоих серверов с браузером Opera – Куки передаются нормально (так же как в последнем примере).

Не можем понять, в чём причина. Почему на одинаковые команды из HTTP-заголовков браузер реагирует по разному, и в одном случае записывает переменную, а в другом нет? Хотя разница в запросах есть, но в других тегах.

Долбились в разные параметры функции setcookie – по барабану.

 

Может подскажешь нам чего)

 

Полный листинг:

IE <=> http://forum_test.a108.net/headers.php

1) Запрос IE

GET /headers.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; .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.net

Connection: Keep-Alive

 

2) Ответ

HTTP/1.1 200 OK

Date: Thu, 04 Mar 2010 07:35:43 GMT

Server: Apache/2.2.3 (CentOS)

Accept-Ranges: bytes

X-Powered-By: PHP/4.4.9

Set-Cookie: name=val

Connection: close

Transfer-Encoding: chunked

Content-Type: text/html; charset=windows-1251

 

3) Второй запрос IE

GET /headers.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; .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.net

Connection: Keep-Alive

 

IE <=> http://semnt.ru/headers.php

1) Запрос IE

GET /headers.php HTTP/1.1

Accept: */*

Accept-Language: ru

Accept-Encoding: gzip, deflate

If-Modified-Since: Thu, 04 Mar 2010 07:41:27 GMT; length=542

User-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.ru

Connection: Keep-Alive

 

2) Ответ сервера

HTTP/1.1 200 OK

Server: nginx/0.7.64

Date: Thu, 04 Mar 2010 07:41:51 GMT

Content-Type: text/html; charset=windows-1251

Transfer-Encoding: chunked

Connection: keep-alive

X-Powered-By: PHP/5.2.12

Set-Cookie: name=val

Content-Encoding: gzip

Expires: Thu, 01 Jan 1970 00:00:01 GMT

Last-Modified: Thu, 04 Mar 2010 07:41:51 GMT

 

3) Второй запрос IE

GET /headers.php HTTP/1.1

Accept: */*

Accept-Language: ru

Accept-Encoding: gzip, deflate

If-Modified-Since: Thu, 04 Mar 2010 07:41:51 GMT; length=542

User-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.ru

Connection: Keep-Alive

Cookie: name=val

Поделиться сообщением


Ссылка на сообщение

Потому что для поддоменов в setcookie нужно указывать домен, причём wildcard: .domen.ru

Столько написали, протестовали, а документацию по функции и FAQ про куки на ibr не прочитали, ай-ай-ай.

Поделиться сообщением


Ссылка на сообщение

Проблема решена. Подробнее здесь.

Поделиться сообщением


Ссылка на сообщение

Кстати, еще по теме.

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...