После последнего обновления у меня возникла ошибка с cookies, связанная с атрибутом SameSite.

Куки принадлежат сторонним разработчикам (Fontawesome, jQuery, Google Analytics, Google reCaptcha, Google Fonts и т. д.)

.

Ошибки в консоли Chrome выглядят следующим образом.

Куки, связанные с межсайтовым ресурсом по адресу , были установлены без атрибута `SameSite`. Будущий выпуск Chrome будет передавать файлы cookie с межсайтовыми запросами, только если они установлены с `SameSite=None` и `Secure`. Вы можете просмотреть файлы cookie в инструментах разработчика в разделе Application>Storage>Cookies и посмотреть более подробную информацию на сайтах  и .
(index):1 Файл cookie, связанный с межсайтовым ресурсом по адресу http://jquery.com/, был установлен без атрибута `SameSite`. Будущий выпуск Chrome будет передавать файлы cookie с межсайтовыми запросами, только если они установлены с `SameSite=None` и `Secure`. Вы можете просмотреть файлы cookie в инструментах разработчика в разделе Application>Storage>Cookies и посмотреть более подробную информацию на сайтах https://www.chromestatus.com/feature/5088147346030592 и https://www.chromestatus.com/feature/5633521622188032.
(index):1 Файл cookie, связанный с межсайтовым ресурсом по адресу http://fontawesome.com/, был установлен без атрибута `SameSite`. Будущий выпуск Chrome будет передавать файлы cookie с межсайтовыми запросами, только если они установлены с `SameSite=None` и `Secure`. Вы можете просмотреть файлы cookie в инструментах разработчика в разделе Application>Storage>Cookies и посмотреть более подробную информацию на сайтах https://www.chromestatus.com/feature/5088147346030592 и https://www.chromestatus.com/feature/5633521622188032.
(index):1 Файл cookie, связанный с межсайтовым ресурсом по адресу http://google.com/, был установлен без атрибута `SameSite`. Будущий выпуск Chrome будет передавать файлы cookie с межсайтовыми запросами, только если они установлены с `SameSite=None` и `Secure`. Вы можете просмотреть файлы cookie в инструментах разработчика в разделе Application>Storage>Cookies и посмотреть более подробную информацию на сайтах https://www.chromestatus.com/feature/5088147346030592 и https://www.chromestatus.com/feature/5633521622188032.
(index):1 Файл cookie, связанный с межсайтовым ресурсом по адресу https://google.com/, был установлен без атрибута `SameSite`. Будущий выпуск Chrome будет передавать файлы cookie с межсайтовыми запросами, только если они установлены с `SameSite=None` и `Secure`. Вы можете просмотреть файлы cookie в инструментах разработчика в разделе Application>Storage>Cookies и посмотреть более подробную информацию на сайтах https://www.chromestatus.com/feature/5088147346030592 и https://www.chromestatus.com/feature/5633521622188032.
(index):1 Файл cookie, связанный с межсайтовым ресурсом по адресу https://www.google.com/, был установлен без атрибута `SameSite`. Будущий выпуск Chrome будет передавать файлы cookie с межсайтовыми запросами, только если они установлены с `SameSite=None` и `Secure`. Вы можете просмотреть файлы cookie в инструментах разработчика в разделе Application>Storage>Cookies и посмотреть более подробную информацию на сайтах https://www.chromestatus.com/feature/5088147346030592 и https://www.chromestatus.com/feature/5633521622188032.
(index):1 Файл cookie, связанный с межсайтовым ресурсом по адресу http://www.google.com/, был установлен без атрибута `SameSite`. Будущий выпуск Chrome будет передавать файлы cookie с межсайтовыми запросами, только если они установлены с `SameSite=None` и `Secure`. Вы можете просмотреть файлы cookie в инструментах разработчика в разделе Application>Storage>Cookies и посмотреть более подробную информацию на сайтах https://www.chromestatus.com/feature/5088147346030592 и https://www.chromestatus.com/feature/5633521622188032.
(index):1 Файл cookie, связанный с межсайтовым ресурсом по адресу http://gstatic.com/, был установлен без атрибута `SameSite`. Будущий выпуск Chrome будет передавать файлы cookie с межсайтовыми запросами, только если они установлены с `SameSite=None` и `Secure`. Вы можете просмотреть файлы cookie в инструментах разработчика в разделе Application>Storage>Cookies и посмотреть более подробную информацию на сайтах https://www.chromestatus.com/feature/5088147346030592 и https://www.chromestatus.com/feature/5633521622188032.

Есть ли что-то, что мне нужно сделать на моей локальной машине или сервере, или это просто какая-то функция, которую они должны реализовать в будущих выпусках своих библиотек?

Ответы (6)

Это консольное предупреждение не является ошибкой или фактической проблемой - Chrome просто распространяет информацию о новом стандарте, чтобы повысить уровень принятия стандарта разработчиками.

Это не имеет никакого отношения к вашему коду. Это то, что их веб-серверы должны будут поддерживать.

Дата выхода исправления - 4 февраля 2020 года согласно: https://www.chromium.org/updates/same-site

Февраль, 2020: Развертывание правоприменительной практики для Chrome 80 Stable: Поведение SameSite-by-default и SameSite=None-requires-Secure начнет распространяться на Chrome 80 Stable для первоначальной ограниченной группы пользователей начиная с недели 17 февраля 2020, исключая праздник День президента США в понедельник. Мы будем внимательно следить и оценивать влияние на экосистему, начиная с этого ограниченного этапа и постепенно расширяя масштабы распространения.

Полный график выпуска Chrome можно найти здесь.

Я решил ту же проблему, добавив в заголовок ответа

response.setHeader("Set-Cookie", "HttpOnly;Secure;SameSite=Strict");

SameSite предотвращает отправку браузером cookie вместе с межсайтовыми запросами. Основной целью является снижение риска утечки межсайтовой информации. Он также обеспечивает некоторую защиту от атак подделки межсайтовых запросов. Возможные значения флага - Lax или Strict.

Сайт cookies объясняется здесь

Пожалуйста, ознакомьтесь с этим перед применением любого варианта.

Надеемся, это вам поможет.

Чтобы уточнить ответ Рахула Махадика, это работает для MVC5 C#.NET:

AllowSameSiteAttribute.cs

public class AllowSameSiteAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var response = filterContext.RequestContext.HttpContext.Response;

        if(response != null)
        {
            response.AddHeader("Set-Cookie", "HttpOnly;Secure;SameSite=Strict");
            //Add more headers...
        }

        base.OnActionExecuting(filterContext);
    }
}

HomeController.cs

    [AllowSameSite] //For the whole controller
    public class UserController : Controller
    {
    }

или

    public class UserController : Controller
    {
        [AllowSameSite] //For the method
        public ActionResult Index()
        {
            return View();
        }
    }

Обновление - июнь 2021

.

Флаг chrome для #same-site-by-default удален из панели экспериментов Chrome в Chrome 91.

Флаг по-прежнему доступен через опции запуска до Chrome 94.

Для macos команда терминала для запуска с флагом выглядит так:

// Chrome
open -n -a Google\ Chrome --args --disable-features=SameSiteByDefaultCookies

// Chrome Canary
open -n -a Google\ Chrome\ Canary --args --disable-features=SameSiteByDefaultCookies

Более подробная информация:

Мар 18, 2021: Флаги #same-site-by-default-cookies и #cookies-without-same-site-must-be-secure были удалены из chrome://flags начиная с Chrome 91, так как это поведение теперь включено по умолчанию. В Chrome 94 флаг командной строки --disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure будет удален. Источник: Страница обновления SameSite.


Оригинальный ответ - март 2020

.

Если вы тестируете на localhost и не контролируете заголовки ответа, вы можете отключить его с помощью флага chrome.

Зайдите на сайт и отключите его: chrome://flags/#same-site-by-default-cookies Снимок экрана SameSite by default cookies

Мне нужно отключить его, потому что Chrome Canary начал выполнять это правило примерно с версии 82.0.4078.2, и теперь он не устанавливает эти файлы cookie.

Примечание: я включаю этот флаг только в Chrome Canary, который использую для разработки. Лучше не включать этот флаг для повседневной работы в Chrome по тем же причинам, по которым google вводит его.

Исправлено путем добавления crossorigin в тег script.

From: https://code.jquery.com/


Атрибуты integrity и crossorigin используются для проверки целостности субресурса (Subresource целостности (SRI). Это позволяет браузерам убедиться в том, что ресурсы, размещенные на сторонних серверах, не были подделаны. Использование SRI рекомендуется в качестве лучшей практики, когда библиотеки загружаются из сторонних источников. Подробнее на сайте srihash.org

Мне пришлось отключить это в chrome://flags

введите описание изображения здесь

Когда речь заходит о Google Analytics, я нахожу ответ Райка на Secure Google tracking cookies очень полезным. Он установил значения secure и samesite.

ga('create', 'UA-XXXXX-Y', {
    cookieFlags: 'max-age=7200;secure;samesite=none'
});

Также больше информации в этом блог-посте

2022 WebDevInsider