Почему мои файлы cookie с междоменным запросом и withCredentials=true
больше не отправляются, когда в среде Chrome?
включена опция "Блокировать сторонние файлы cookie": Chrome 80.0.3987.122
, nodejs server
, 2 домен (a.com
, b.com
)
Контрольный пример:
- Установить Cook ie, используя новые правила
test=cookie; SameSite=None; Secure
для домена a.com
- Напишите
<iframe src="https://b.com" />
и поместите в a.com/index.html
- Напишите
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://a.com/', true);
xhr.withCredentials = true;
xhr.send(null);
и установите в b.com/index.html
- Добавьте CORS к
a.com
, например: access-control-allow-origin: https://b.com
и access-control-allow-credentials: true
- Открыть
https://a.com
в Chrome
В результате : xhr запрос к a.com
успешно отправлен и получен 200, но: когда "Блокировать третий "cookie-файлы" включено : cook ie test=cookie
cook ie отсутствует в запросе.
Почему? Это первый участник вечеринки ie, поскольку домен a.com
открыт на вкладке chrome.
Факты:
- Новый Google Cook ie дизайн позволяет готовить ie с
SameSite=None; Secure
( источник ) - CORS позволяет отправлять
site cookies
при access-control-allow-credentials: true
( source ) - XMLHttpRequest позволяет отправлять куки с
withCredentials=true
( source ) Request
и Cookie
для 1rd-site
(не 3-го) в то время как опция называется block third-party cookie
Проблема с хромом: https://bugs.chromium.org/p/chromium/issues/detail?id=918322