Я создал расширение Chrome и из popup.js я назвал PHP скрипт (используя Xhttprequest), который читает cookie. Нравится:
$cookie_name = "mycookie";
if(isset($_COOKIE[$cookie_name]))
{
echo $_COOKIE[$cookie_name];
}
else{
echo "nocookie";
}
Но я получаю это предупреждение при ошибках в расширениях.
Файл cookie, связанный с межсайтовым ресурсом в (Здесь мой домен), был установлен без
SameSite
атрибута. В будущем выпуске Chrome файлы cookie будут отправляться только с межсайтовыми запросами, если они установлены с помощьюSameSite=None
иSecure
. Вы можете просмотреть файлы cookie в инструментах разработчика в разделе «Приложение»> «Хранилище»> «Файлы cookie» и ознакомиться с более подробной информацией по адресу https://www.chromestatus.com/feature/5088147346030592 и https://www.chromestatus.com/feature/5633521622188032 .
Я пытался создать печенье, как это, но это не помогло.
setcookie($cookie_name,$cookie_value, time() + 3600*24, "/;samesite=None ","mydomain.com", 1);
Следуя инструкциям из этого вопроса.
setcookie
замену, которая требует дополнительного аргумента$sameSite
. Аргумент может бытьNone
,Lax
илиStrict
. Интерфейс ООП также доступен.Ответы:
Я тоже в «методе проб и ошибок», но этот ответ от Github из Google Chrome Labs мне немного помог. Я определил его в свой основной файл, и он работал - хорошо, только для одного стороннего домена. Все еще делаю тесты, но я хочу обновить этот ответ с лучшим решением :)
Если у вас PHP до 7.2, как мой сервер:
header('Set-Cookie: cross-site-cookie=name; SameSite=None; Secure');
Или, если ваш хост уже обновлен до 7.3, вы можете использовать:
setcookie('cross-site-cookie', 'name', ['samesite' => 'None', 'secure' => true]);
Еще одна вещь, которую вы можете попробовать проверить куки, это включить флаг ниже, который, по их собственным словам, «добавит предупреждающие сообщения консоли для каждого куки, потенциально затронутого этим изменением»:
chrome://flags/#cookie-deprecation-messages
Смотрите весь код по адресу: https://github.com/GoogleChromeLabs/samesite-examples/blob/master/php.md , у них
same-site-cookies
тоже есть код .источник
По мере появления новой функции
SameSite=None
куки-файлы также должны быть помечены какSecure
или они будут отклонены.Вы можете найти больше информации об изменениях в обновлениях хрома и в этом блоге
Примечание : не совсем связано непосредственно с вопросом, но может быть полезно для других, кто попал сюда, так как это было моей заботой вначале при разработке моего сайта:
если вы видите предупреждение из вопроса, в котором перечислены некоторые сторонние сайты (в моем случае это был google.com, да) - это означает, что им нужно это исправить, и это не имеет никакого отношения к вашему сайту. Конечно, если в предупреждении не упоминается ваш сайт, в этом случае добавление
Secure
должно исправить это.источник
источник
В итоге я исправил установку Ubuntu 18.04 / Apache 2.4.29 / PHP 7.2 для Chrome 80, установив mod_headers:
Добавление следующей директивы в наши конфигурации Apache VirtualHost:
И перезапуск Apache:
Просматривая документы ( http://www.balkangreenfoundation.org/manual/en/mod/mod_headers.html ), я заметил, что условие «всегда» имеет определенные ситуации, когда оно не работает из одного и того же пула заголовков ответов. Таким образом, не использовать «всегда» - это то, что у меня работало с PHP, но документы предполагают, что если вы хотите охватить все свои базы, вы можете добавить директиву как с «всегда», так и без него. Я не проверял это.
источник