Citirile către API nu mai plătesc un drum de permisiune
Închide #35 (closed).
Frontendul și API-ul sunt pe domenii diferite, deci browserul cerea permisiunea (OPTIONS) înaintea fiecărei cereri, iar răspunsul nu spunea cât timp e valabil. Pe pagina de start: 22 de intrări către API, adică 11 cereri și 11 permisiuni, 143 ms plătiți doar ca browserul să afle că are voie înainte de /api/banners — cererea care decide când apare imaginea principală.
Două schimbări:
-
apiFetchdeclaraContent-Type: application/jsonși peGET-uri fără corp, ceea ce le scotea din categoria „cereri simple". Citirile pleacă acum fără antete proprii, deci fără permisiune deloc. Ce are corp păstrează antetul; apelurile de panou păstreazăcredentials: 'include'. -
maxAgepe configurațiacors, ca permisiunea care chiar e necesară să fie ținută minte.
Siguranța sesiunii de admin, verificată în cod, nu presupusă: Express 5 lasă req.body nesetat când nu parsează nimic, deci am enumerat toate cele cinci scrieri fără corp din frontend (logout, publish/hide, publish, block/unblock, activate/deactivate) și am deschis fiecare handler — folosesc doar req.params și req.admin. Testele backend loveau deja aceste rute fără Content-Type și erau verzi. CSRF nu se deschide: requireSameOrigin e montat pe tot routerul de admin, iar cookie-ul e SameSite=Strict.
Al doilea commit repară trei erori de tip din testul nou, invizibile azi pentru că nimic nu verifică src/test — dar #39 (closed) pornește exact acea verificare, și fără reparație ar fi picat build-ul ramurii care fuziona a doua.
Verificat: backend build curat; frontend tsc curat, 218 de teste în 28 de fișiere. Combinația cu tsconfig-ul din #39 (closed) a fost rulată separat: zero erori.