Это было немного сложно, но я надеюсь, что нашел решение для вас. Я предполагаю (1) решит вашу проблему. Все остальное не является обязательным и должно помочь вам уменьшить некоторые потенциальные проблемы.
1. При использовании samesite = Strict
добавьте ваше доменное имя к параметрам по умолчанию ie. Я смог воспроизвести вашу проблему с вашим фрагментом кода. Мой браузер Opera не показывал повара ie и полностью их игнорировал.
Интересно, что при попытке запроса curl
в CLI был доступен заголовок set-cookie
, который начал меня сильно озадачивать.
Если вы включите samesite=Strict
, тогда вы ДОЛЖНЫ установить свой домен в пределах session_set_cookie_params
, иначе мой браузер его игнорировал.
session_set_cookie_params(3600, '/', 'cookie-test.local');
решал проблему для меня.
2. Ваш сайт отправляет заголовок "set-cook ie" дважды с различными настройками
$ curl -I -X GET https://www.jabcreations.com/ | grep set-cookie
set-cookie: session2=e633d6fcb7fb426f86b065173bc6c8ab; expires=Wed, 18-Mar-2020 20:05:21 GMT; Max-Age=3600; path=/; secure; HttpOnly; SameSite=Strict
set-cookie: session2=e633d6fcb7fb426f86b065173bc6c8ab; expires=Wed, 18-Mar-2020 20:05:21 GMT; Max-Age=3600; path=/; domain=www.jabcreations.com
Я смог воспроизвести это с помощью следующего кода. Мой Opera-браузер также показывает мне ошибку в заголовке специфической c запроса. Рядом с поваром ie вы увидите маленький желтый значок «опасности». В моем случае это показало, что я пытался использовать безопасный повар ie для незащищенного соединения.
setcookie('session2', session_id(), time() + 3600, '/', "", false, false);
setcookie('session2', session_id(), time() + 3600, '/', "", true, true);
В этом случае я бы попытался определить ваше использование функции session_
и ваше setcookie()
Применение.
Поскольку вы не используете какой-либо конкретный фреймворк, я бы дал первое предположение для автозагрузчика и / или оператора include
или require
, который используется дважды внутри вашего проекта.
Пожалуйста, дайте Я знаю, как вы загружаете свои файлы внутри вашего проекта.
3. (Offtopi c) Ваш сайт отправляет файлы cookie для ваших активов
Я не уверен, действительно ли это нужно вашим ресурсам, но я бы не стал отправлять файлы cookie для ваших активов. Я бы сказал, что в большинстве случаев неуместно управлять поваром ie на ваших ресурсах. Я бы их убрал. Это уменьшит количество потенциальных конфликтов повара ie в вашем браузере, и проблемы повара ie могут быть уменьшены до соответствующих запросов.
4. (Offtopi c) Минимальное изменение вашего состояния
Я не уверен, что HTTPS всегда строчные или нет, но php $ _ документация SERVER состояния:
Установите непустое значение, если скрипт запрашивался по протоколу HTTPS. Примечание: обратите внимание, что при использовании ISAPI с IIS значение будет off , если запрос не был сделан через протокол HTTPS.
В соответствии с этим я бы изменил условие на :
if (!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') {
// ssl mode..
}