--- issueRef: "#214" version: 7 updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} updatedAt: 1786809011367 --- ## Triage 2026-08-15 - Symptôme: sur l'interface web PC, l'accès aux fichiers échoue avec `missing Origin header`. - Diagnostic convergent UX/Architect: rejet backend `403` sur validation `Origin` appliquée aux routes `/api/*`, y compris des `GET` fichiers browser-safe. - Branche locale créée par Git: `fix/214-web-origin-header-file-access` depuis `develop`. - Direction de fix: conserver le contrôle strict `Origin` pour `POST`/`OPTIONS`/WS, mais accepter les `GET` lecture/fichiers sans header `Origin` et ajouter des tests de non-régression. - UX: si un message utilisateur reste nécessaire, ne pas exposer le texte technique brut `missing Origin header`. ## Implémentation DevBackend - Fichier modifié: `crates/web-server/src/lib.rs`. - Politique livrée: `GET /api/project-files`, `/api/project-files/download-file`, `/api/project-files/download-directory` acceptés sans `Origin`; validation stricte maintenue si `Origin` est présent. - Non-régression attendue: `POST /api/pair` sans `Origin` toujours refusé, WebSocket sans `Origin` toujours refusé. - Tests DevBackend: - `cargo fmt --package web-server` => OK - `cargo test -p web-server origin_header` => OK (3 tests) - `cargo test -p web-server authorized_project_file_gets_allow_missing_origin_header` => OK - `cargo test -p web-server` => KO (`Too many open files`) - `cargo test -p web-server -- --test-threads=1` => échecs PTY/WebSocket non reliés au correctif Origin selon DevBackend ## Verdict QA - QA a ajouté un test négatif complémentaire pour verrouiller qu'une route fichier non-GET sans `Origin` reste refusée. - Commande validante principale: `cargo test -p web-server origin_header -- --nocapture` => VERT (4/4) - Rejeu ciblé: `cargo test -p web-server non_get_project_file_route_still_requires_origin_header -- --nocapture` => VERT - Conclusion: `GET /api/project-files*` sans `Origin` accepté; `POST /api/pair`, WebSocket et route fichier non-GET sans `Origin` refusés. ## Git - Commit fix: `b3fe1d5` — `fix(web): accepte GET /api/project-files* sans Origin (allow_missing ciblé) — #214` - Commit bookkeeping partagé: `76f2202` — `chore(idea): bookkeeping #214 QA verte + clôtures index #212/#213` - Merge local: `a369993` — `merge(web): accès fichiers sans Origin header — #214 (QA verte)` - Branche finale active: `develop` - Aucun push effectué.