[ Обновлено - см. Комментарий в конце]
Google изменит поведение своего браузера Chrome, чтобы файлы cookie больше не работали при размещении в IFRAME другого домена, если только Для файлов cookie явно установлено значение SameSite = Нет и Безопасность.
Для этого мы внесли это изменение в наш код ASP. NET MVC. У нас есть логика c, когда это нужно установить (только для партнеров, с которыми мы согласились работать), поэтому у нас есть условный лог c:
if (isSameSiteCookieEnforced)
{
cookie.SameSite = SameSiteMode.None;
cookie.Secure = true;
}
Мы проверили это в нашем DEV, QA, STAGE и все работает отлично. В инструментах разработчика Chrome (Приложение> Файлы cookie) вы можете проверить файлы cookie и убедиться, что все они помечены как безопасные, и в столбце SameSite их нет.
Однако, когда мы добавили это в В нашей среде PROD мы получаем разные результаты, используя один и тот же браузер: куки помечены как безопасные, но значение SameSite пусто.
То, что мы проверили:
- Балансировщик нагрузки: мы изолировал это и перешел непосредственно к одному веб-серверу, тот же результат
- Установлено. NET фреймворки: во всех средах мы установили 4.7.2 и 4.8
- Адреса. NET framework: во всех средах web.config предусматривает 4.7.2
- Код: мы извлекли соответствующую DLL из PROD и проверили с помощью ILSPY. Он содержит приведенный выше код
В настоящее время затрудняется объяснить, как файлы cookie могут потерять свойство «SameSite». Переходя к chrome: // flags и фильтрации на SameSite , мы показываем три параметра как «по умолчанию», поэтому Chrome не должен влиять на что-либо иначе, чем одна среда в другую.
Обновление
Наше приложение ASP. NET MVC использует IHttpModule и является одним из последних шагов в методе EndRequest мы прослеживаем печенье. Вы можете ясно видеть, что они установлены с SameSite = None и Secure = true. Но когда они попадают в браузер, свойство SameSite удаляется.