Repository navigation
Commit 5ca1c6e
committed
feat(webui): make the proxied Mini App document framable and carry the bridge
Second slice of #255. The page is framed by this client on a different origin, so a page
must not be able to refuse being framed. The proxy drops `X-Frame-Options` from every
response it forwards and removes the `frame-ancestors` directive from a page's own CSP,
leaving its other directives alone — the Mini App's origin is separate from the client's,
so the rest of its policy governs a document that cannot reach the client anyway. Nothing
is added: no header the page did not ask for, no CSP of the proxy's own.
The document is the one response the proxy rewrites. The page bridge has to be in the
document before the page's own scripts run, so the proxy injects a script tag for it
before `</head>`, after the opening `<body>` tag when a page has no head, or ahead of the
document when it has neither; the body it sends is not the body it received, so it restates
`Content-Length` and drops the upstream's `Transfer-Encoding` with it. The bridge script is
served by the proxy itself at its own path and never forwarded upstream, which keeps the
seam in one place: this change owns which document, where the tag goes and what headers
survive, while the bridge body arrives with #260.
ADR 0020's open question about framing is settled by these rules and removed from the open
list; the bridge's method-level error mapping is the only one left.
Proven: the bridge is injected before `</head>`, before `<body>` on a headless document,
`X-Frame-Options` is gone, `frame-ancestors` is gone while `default-src` and `script-src`
survive, the bridge path is served locally without reaching the upstream, and paths and
bodies of ordinary responses are untouched.
Verified: pnpm typecheck:webui (server, client and test); the focused suite (8 cases);
pnpm check:source after the inventory write. pnpm check:webui-dependency still fails on the
pre-existing WorkspacePanels.tsx violation described in the previous commit.1 parent b3b0981 commit 5ca1c6e
3 files changed
Lines changed: 147 additions & 7 deletions
File tree
- packages/webui
- docs/adr
- src/server/miniapp
- test/unit
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
435 | 435 | | |
436 | 436 | | |
437 | 437 | | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
438 | 452 | | |
439 | 453 | | |
440 | | - | |
441 | | - | |
442 | | - | |
443 | | - | |
444 | | - | |
| 454 | + | |
445 | 455 | | |
446 | 456 | | |
447 | 457 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
40 | 52 | | |
41 | 53 | | |
42 | 54 | | |
43 | 55 | | |
| 56 | + | |
44 | 57 | | |
45 | 58 | | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
46 | 62 | | |
47 | 63 | | |
48 | 64 | | |
| |||
62 | 78 | | |
63 | 79 | | |
64 | 80 | | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
65 | 87 | | |
66 | 88 | | |
67 | 89 | | |
| |||
75 | 97 | | |
76 | 98 | | |
77 | 99 | | |
78 | | - | |
79 | | - | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
80 | 122 | | |
81 | 123 | | |
82 | 124 | | |
| |||
147 | 189 | | |
148 | 190 | | |
149 | 191 | | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
31 | 45 | | |
32 | 46 | | |
33 | 47 | | |
| |||
52 | 66 | | |
53 | 67 | | |
54 | 68 | | |
| 69 | + | |
55 | 70 | | |
56 | 71 | | |
57 | 72 | | |
| |||
142 | 157 | | |
143 | 158 | | |
144 | 159 | | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
0 commit comments