Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Zero108

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

Recommended Posts

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

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

Share this post


Link to post
Share on other sites

Настройки cookies.

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

Share this post


Link to post
Share on other sites

На сервере 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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...