Атрибут cookie Samesite не устанавливается с помощью JavaScript

Я пытаюсь установить атрибут SameSite, используя JavaScript на моем сайте. Код

<script type="text/javascript">

    document.cookie = "AC-C=ac-c;expires=Fri, 31 Dec 9999 23:59:59 GMT;path=/;HttpOnly;SameSite=Lax";
  </script>

Файл cookie устанавливается, но атрибут SameSite не устанавливается. Есть идеи, где я скучаю?

Спасибо

1 ответ

Ваша проблема не с SameSite, но с HttpOnly, HttpOnly а также SameSite 2 независимые вещи, если убрать HttpOnly это будет работать... и cookie будет установлен с SameSite,

<script>
    document.cookie = "AC-C=ac-c;expires=Fri, 31 Dec 9999 23:59:59 GMT;path=/;SameSite=Lax";
    alert( document.cookie );
</script>

Вы не можете установить флаг HttpOnly через JavaScript API document.cookie. ФлагHttpOnlyможет быть установлен только через заголовок cookie в ответе сервера. См. https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies.Cookies created via JavaScript cannot include the HttpOnly flag.

Вы написали The cookie is being set but the SameSite attribute is not being setно я думаю это неправда. Файл cookie, установленный через JS с атрибутом HttpOnly, вообще отклоняется, или, возможно, какой-то браузер устанавливает его, но игнорирует флаг HttpOnly - так что, наконец, ваш файл cookie не только HTTP.

Это атрибут, который может быть установлен только сервером (например, HttpOnly) в ответе куки отправляет браузеру. Было бы бессмысленно, если бы клиентскому коду было разрешено устанавливать его, если вы действительно задумываетесь о его назначении (предотвращение CSRF, заставляя браузер отправлять это только для тех же исходных запросов).

Cookie-файлы SameSite позволяют серверам требовать, чтобы cookie-файлы не отправлялись с межсайтовыми запросами, что в некоторой степени защищает от атак подделки межсайтовых запросов (CSRF). Файлы cookie SameSite все еще являются экспериментальными и еще не поддерживаются всеми браузерами.

Ссылка 1

Ссылка 2

Ссылка 3

Другие вопросы по тегам