ADR-072 — CORS and browser auth

Architecture decision record — status: Accepted.

Source: docs/adr/ADR-072-cors-cookies.md

ADR-072: CORS and browser auth

Estado

Accepted — 2026-08-23

Decisión

  • API y web pueden ser orígenes distintos (localhost:3000 / :3001).
  • CORS: allowlist APP_URL (ADR-046). No *. Credentials si hay cookies.
  • Auth de API: Bearer JWT (ADR-023). El web guarda access en memoria y refresh en httpOnly Secure cookie SameSite=Lax (o refresh también Bearer — se elige cookie httpOnly para refresh en el scaffold).
  • CSRF: SameSite en cookie de refresh + origin check en mutaciones cookie-authed.
  • Headers de seguridad en web (ADR-026): HSTS en prod, X-Content-Type-Options, frame deny.

No localStorage para access de larga duración.