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.