37 lines
2.5 KiB
Markdown
37 lines
2.5 KiB
Markdown
---
|
|
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é.
|