intermediate

SameSite cookies

Используйте SameSite, Secure, HttpOnly, domain, path, expiry и credentialed fetch settings для reasoning о session behavior.

`SameSite` управляет отправкой cookies в cross-site запросах — основная защита от CSRF при cookie-based sessions.

| Значение | Cross-site GET | Cross-site POST | Заметки | |----------|----------------|-----------------|---------| | Strict | Нет | Нет | Строжайший; ломает некоторые deep links | | Lax | Только top-level navigation | Нет | Default в современных браузерах | | None | Да (с Secure) | Да | Для embedded cross-site flows |

					Set-Cookie: session=...; HttpOnly; Secure; SameSite=Lax; Path=/
				

Credentialed `fetch(..., { credentials: 'include' })` требует согласованных CORS и атрибутов cookie. Сторонняя аналитика или SSO iframe часто требуют `SameSite=None; Secure`.

На интервью: почему login по bookmark работает, а AJAX с другого subdomain — нет; миграции при ужесточении defaults браузеров.

Типовые ошибки: None без Secure; cookies на cross-origin XHR без credentials mode; слишком широкий scope subdomain.

Компромисс — между простотой, производительностью, безопасностью и эксплуатацией: назовите, что оптимизировали и какую цену приняли.

Чеклист:

  • SameSite под flow (first-party vs embedded).
  • None всегда с Secure.
  • CORS credentials согласованы с cookie policy.
  • E2E-тест OAuth и payment redirects.