Session Cookie не устанавливается только в IE11

Любопытная проблема.

Недавно разработанный сайт, использует стороннюю систему входа в систему, которая использует сессии (сюрприз!). Сайт отлично работает во всех случаях, во всех браузерах Кроме Internet Explorer 11 (и, возможно, предыдущие версии, не проверены).

  • Я читал различные связанные темы на SO, ничто не отвечает требованиям.
  • PHP Header не делает перенаправление на каждой затронутой странице
  • нет _ в доменном имени или URL.
  • Нет фреймов.
  • Сессия и домен защищены.

а) На каждой странице есть файл контроллера с информацией заголовка:

header("Cache-Control: no-cache, must-revalidate"); //HTTP 1.1
header("Expires: Thu, 19 Nov 2011 08:52:00 GMT"); // Date in the past
header('Content-Type: text/html; charset=utf-8');
header("X-Clacks-Overhead: GNU Terry Pratchett");
header_remove("X-Powered-By");
header("X-XSS-Protection: 1; mode=block");
header("X-Frame-Options: SAMEORIGIN");
header("X-Content-Type-Options: nosniff");
header("Content-Language: en");
header("Content-Security-Policy: upgrade-insecure-requests;");
header("Referrer-Policy: origin-when-cross-origin"); //referrer for Chrome
header("Referrer-Policy: strict-origin-when-cross-origin");

if (isset($_SERVER['HTTP_USER_AGENT']) &&
(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)){
header('X-UA-Compatible: IE=edge,chrome=1');
}

б) Как часть этого процесса; проверка файлов cookie выполняется, чтобы узнать, включены ли файлы cookie в браузере клиента. Это сделано через и то и другое логин / доступ контролируемый и общедоступный участки сайта.

if($_COOKIE['cookieEnabled'] !== "yes") {
\setcookie('cookieEnabled', "yes", time() + 42000, "/", $_SERVER['HTTP_HOST'], true, true);
}

Все, что это, это cookie, который говорит «да», куки включены, если cookie еще не установлен. Просто.

с) Ниже этого; есть код контроллера для загрузки переменных сеанса и выполнения других действий для сторонних администраторов.

// Create / Include the Session Object - Session.php
$session = new Session($db);

г) Я установил тестовый статус в Session.php __construct сделать это:

    session_start();

if($_COOKIE['cookieEnabled'] !== "yes" && empty($_SESSION)) {
error_log("INFO: An access attempt without a session or cookie was attempted...");
if($_COOKIE['cookieEnabled'] !== "yes"){
error_log("Cookie does not appear to be enabled");
}
die("unimportant debug error");
}

Обратите внимание, что массив сессии никогда не будет пустым, так как он предварительно заполнен на предыдущих страницах;

е) [Local] PHP.ini, таким образом:

session.cookie_secure=1
default.charset=utf-8
error_log=/home/domainaccount/error/PHP_error.log
session.save_path=/home/domainaccount/sessionz
session.cookie_domain=domain.org.uk

НОТА: Веб-путь: /home/domainaccount/public_html/

Значения PHP.ini были проверены с phpinfo() и установлены правильно.

Я загружаю веб-сайт в различных браузерах, и он входит в систему просто отлично, все работает, данные сессии переносятся.

Однако на IE11 это не так. Он просто возвращается с пустым экраном, без ошибок, без обратной связи (данные сеанса, возвращаемые на страницу входа), и нет журналов ошибок на основе кода.

Журнал ошибок показывает:

ИНФОРМАЦИЯ: Попытка доступа без сеанса или файла cookie была предпринята …

Целую кучу раз, но никаких признаков того, что печенье отказано, просто сеанс.

Неудивительно, что на странице входа есть header Перенаправление местоположения для успешных и неудачных попыток входа в систему.

  • Номер версии IE: 11.248.16299.0.

  • Настройки файлов cookie IE: принимаются сторонние файлы cookie, сторонние файлы cookie, всегда разрешать сеансовые файлы cookie.

1) Почему это происходит ТОЛЬКО для IE?

2) Как я могу решить эту проблему (изменить заголовки, настройки файлов cookie и т. Д.?)

5

Решение

Некоторые версии IE молча отбрасывают куки, если время сервера прошло, по сравнению с временем клиента. Правильная настройка времени сервера / клиента может помочь.

Это ужасно — серверы будут гораздо более точными хронометристами, чем клиентские браузеры. Вы можете сослаться на это вообще?

Я сталкивался с этим однажды в описании от кого-то еще на GitHub и это исправило мою проблему.

В качестве примечания: поскольку вы явно не указали никаких подчеркиваний в домене, знаете ли вы, что начальные цифры также являются недействительными URL-адресами в соответствии с RFC, и IE также имеет проблемы с ними?

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]