Summary
H._send() sets Content-Type, Content-Length, and cache headers only. There is no:
Content-Security-Policy (frame-ancestors 'none')
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
The dashboard is a privileged local UI (delete sessions, connect MCP, install updates, toggle plugins). A page that can still iframe http://127.0.0.1:8722 can clickjack those controls. Host-header checks (see the loopback issue) do not stop that, because the iframe’s Host is legitimately 127.0.0.1.
Chrome Private Network Access helps for some public-site cases; it is not a substitute for frame-ancestors on the server.
Summary
H._send()setsContent-Type,Content-Length, and cache headers only. There is no:Content-Security-Policy(frame-ancestors 'none')X-Frame-Options: DENYX-Content-Type-Options: nosniffThe dashboard is a privileged local UI (delete sessions, connect MCP, install updates, toggle plugins). A page that can still iframe
http://127.0.0.1:8722can clickjack those controls. Host-header checks (see the loopback issue) do not stop that, because the iframe’sHostis legitimately127.0.0.1.Chrome Private Network Access helps for some public-site cases; it is not a substitute for frame-ancestors on the server.