Итак, у меня есть повар ie, установленный через js, когда пользователь принимает всплывающее окно, он устанавливается с помощью следующей функции.
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
setCookie("accepted_popup", 'accepted_value', 1);
При проверке Cook ie в chrome инструменты разработчика действительно установлены.
Name |Value |Domain |Path |Expires |Size |HttpOnly |Secure |SameSite |Priority
accepted_popup |accepted_value |example.com |/ |2020-07-09T15:07:43.000Z |11 | | | |Medium
Я понимаю, что для того, чтобы ie повара вступил в силу на сервере, ему потребуется загрузка страницы. Поэтому я не хочу, чтобы всплывающее окно отображалось при следующей загрузке страницы, поэтому я проверяю Cook ie на сервере следующим образом.
<?php
if(isset($_COOKIE['accepted_popup'])){
doSomething(); //not showing popup
}else{
showPopup(); //showing popup
}
?>
Что нового в этом вопросе, который еще не Ранее спрашивали, что приведенный выше код отлично работал на старом сервере, он перестал работать при переходе на AWS (если это могло быть причиной). Когда я делаю var_dump($_COOKIE);
на сервере, повар ie accept_popup не отображается в нем.
Также я устанавливаю повар ie и получаю его в том же домене (в производстве), скажите "example.com" без субдомена или www.
На моем сайте разработки subdomain.example.com приведенный выше код работает нормально и ведет себя так, как ожидалось.