У меня есть стандартная ситуация аутентификации … Посетитель заполняет логин + пароль для формирования, php-скрипт аутентифицирует его в базе данных, перенаправляет обратно на какую-то страницу.
В этом процессе мы просто добавляем session_regenerate_id (true), когда клиент успешно аутентифицируется непосредственно перед перенаправлением. Все отлично работает в Chrome, но оно не работает в некоторых версиях (не всех) IE11 и последней версии Edge (в виртуальной коробке – в download.exe). Возможно, это не работает в некоторых других браузерах.
Как это работает в Chrome:
Как это работает в IE11 / Edge:
Проблема в том, что сеанс AAA удаляется при восстановлении идентификатора сеанса, поэтому клиент не может быть аутентифицирован.
Он даже не работает, когда нет заголовка местоположения и просто отображается статическая страница со ссылкой на другую страницу.
Похоже, браузер игнорирует Set-cookie.
Когда я удаляю session_regenerate_id (), он «работает», бутон становится менее безопасным.
Я сам отвечаю на свой вопрос … Проблема в том, что заголовок Set-cookie не содержит домена.
Пример: http://www.site.com
Chrome: работает нормально, получает домен с текущего URL (www.site.com). Edge: не знаю, как, но новый идентификатор сеанса сохраняется на домен site.com
Решение: используйте session_set_cookie_params (), чтобы установить домен на «.site.com» (все поддомены).