Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

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

Проблема только в 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

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.