Путаница в отношении изменений SameSite с Chrome - PullRequest
3 голосов
/ 20 марта 2020

Мне нужна помощь в понимании случая, который я не могу найти, описанного в найденном материале, описывающем новые ограничения SameSite для Chrome. В настоящее время у меня есть случай, когда у меня есть сайт, который делает межсайтовые запросы к API. API отвечает заголовками CORS. Подробности:

Site: https://a.a.com
API: https://b.a.com

--API response headers

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://a.a.com

--cookie previously set with

Set-Cookie: value=somevalue; Path=/; Expires=<some time/date>; HttpOnly 

Я не ожидаю, что заголовки CORS повлияют на что-либо (исходя из всего, что я видел, оно никогда не упоминает об изменениях SameSite), но я в любом случае помещаю их здесь. Учитывая этот сценарий и когда я установлю флаги на:

chrome://flags/#same-site-by-default-cookies
chrome://flags/#cookies-without-same-site-must-be-secure 

, я ожидаю, что браузер заблокирует отправку значения cook ie. Это потому, что я ожидал, что повар ie будет обрабатываться так, как если бы он имел SameSite = Lax, и что это межсайтовые запросы. Это не то, что на самом деле происходит, и повар ie успешно отправлен. При тестировании этого я также пытался подождать 3 минуты между любыми запросами и запросом POST, чтобы избежать смягчения «Lax + POST», поскольку мы устанавливаем значение cook ie (с обновленным сроком действия) для каждого ответа. Исходя из того, что я читаю об изменениях, я не понимаю, почему отправка этого сообщения ie не блокируется браузером и почему эти запросы выполняются успешно.

Чтобы сделать вещи более запутанными, мы имеем некоторые случаи во время разработки по следующему сценарию:

Site: http://localhost
API: https://a.b.com

--API response headers

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://localhost

--cookie previously set with

Set-Cookie: value=somevalue; Path=/; Expires=<some time/date>; HttpOnly 

В отличие от первого описанного сценария, эти запросы фактически блокируют отправку повара ie ожидаемым образом (только при включенных новых флагах chrome). Предупреждающее сообщение, которое выдает браузер, относится к флагам SameSite и Secure, как и следовало ожидать.

Может кто-нибудь помочь мне понять, почему первый сценарий работает, а второй - нет? Я обеспокоен тем, что это работает на самом деле ошибка, и это не должно быть. Если это так, то, возможно, в будущем, без предупреждения, go из «работает» в «не работает».

Подробная информация о Chrome изменениях / флагах, которые я нашел, находится здесь:

1 Ответ

2 голосов
/ 21 марта 2020

как упомянуто здесь https://web.dev/samesite-cookies-explained/:

Если пользователь включен www.web.dev и запрашивает изображение от stati c .web.dev, то это запрос на тот же сайт.

То же, что и ваш первый случай:

Site: https://a.a.com
API: https://b.a.com

Таким образом, браузер рассматривает ваш первый запрос как запрос на тот же сайт, и куки не будут удалены, но второй - это межсайтовый запрос, и куки без атрибута samesite будут удалены.

...