Как исправить предупреждение "установить для SameSite cookie значение none"? Расширение Chrome
Я создал расширение Chrome и из popup.js я назвал PHP-скрипт (Using 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.
Я пытался создать такой файл cookie, но это не помогло.
setcookie($cookie_name,$cookie_value, time() + 3600*24, "/;samesite=None ","mydomain.com", 1);
Следуя инструкциям из этого вопроса.
Ответы
Ответ 1
Я тоже в "методе проб и ошибок", но этот ответ от 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
.
Ответ 2
По мере появления новой функции файлы cookie SameSite=None
также должны быть помечены как Secure
, иначе они будут отклонены.
Дополнительную информацию об изменениях в обновлениях хрома и в этом блоге можно найти
.Примечание: не совсем напрямую связано с вопросом, но может быть полезно для других, кто попал сюда, так как это было моей заботой вначале при разработке моего сайта:
если вы видите предупреждение из вопроса, в котором перечислены некоторые сторонние сайты (в моем случае это был google.com, да) - это означает, что они должны это исправить, и это никак не связано с вашим сайтом. Конечно, если в предупреждении не упоминается ваш сайт, в этом случае добавление Secure
должно исправить это.