💬 观点Simon Willison
Datasette Apps: Host custom HTML applications inside — Datasette 新插件 datasette
Datasette 新插件 datasette-apps 发布,允许在安全沙箱内托管自定义 HTML 应用,并与数据库交互。
2026-06-18原文
本文为要点摘要,完整细节以原文为准。
🧭 一图看懂
由原文自动提炼 · 以原文为准点击任一分支,查看这一点的一句话解读
Datasette Apps 沙箱插件
在受限 iframe 沙箱中托管自包含 HTML+JS 应用
- sandbox="allow-scripts allow-forms" 隔离
- 注入 CSP 阻止外部 HTTP 请求
- 无法访问 cookie 与 localStorage
⚙️ 流程拆解
STEP 1创建 HTML+JS 应用
STEP 2放入 iframe 沙箱
STEP 3注入 CSP 限制外联
STEP 4通过 MessageChannel 请求 SQL
STEP 5父窗口校验白名单执行
STEP 6结果与日志回传
🔗 涉及的概念与玩家
- Datasette产品
- datasette-apps产品
- Simon Willison人物
- Claude Artifacts产品
- Datasette Agent产品
- CSP概念
- MessageChannel方法
- stored queries概念
- Simon Willison—创建→Datasette
- datasette-apps—是插件→Datasette
- datasette-apps—使用→CSP
- datasette-apps—使用→MessageChannel
- datasette-apps—依赖→stored queries
- Datasette Agent—可创建→datasette-apps
Datasette Apps 是一个新插件,它允许开发者在 Datasette 实例中托管自定义的 HTML+JavaScript 应用。这些应用运行在严格沙箱化的 <iframe> 中,可以安全地对 Datasette 中的数据进行读写操作。
- 安全沙箱与 CSP 策略:应用通过
<iframe sandbox>和注入的 CSP 元标签被严格限制,无法访问父应用的 DOM、Cookie 或 localStorage,也不能向外部域名发起请求,这为在敏感数据环境中运行不可信代码提供了基础安全保障。 - 受控的 API 通信:沙箱内的应用通过
MessageChannel()与父窗口进行受控通信,可以执行经允许列表验证的只读 SQL 查询。对于写操作,则必须通过 Datasette 的“存储查询”功能来调用特定的预定义查询,从而精细控制数据修改权限。 - LLM 友好的开发模式:插件本身不依赖 LLM,但其自包含应用的特性和创建表单中提供的可复制提示词,使得现代大语言模型能够很好地理解上下文并生成可运行的应用代码,这大大降低了定制化数据应用的门槛。
原文:Datasette Apps: Host custom HTML applications inside Datasette · 作者 Simon Willison
🕸 顺着图谱继续读
- datasette-apps 0.1a2 — Simon Willison 介绍 Datasette Apps 0.1a2 更2026-06-15 · 共同涉及 Simon Willison、datasette-apps、Datasette
- datasette-apps 0.2a0 — Datasette Apps 0.2a0 新增调试工具,让 AI 代理能隐形测试2026-08-01 · 共同涉及 datasette-apps、Datasette、Datasette Agent
- datasette-agent 0.4a0 — Datasette Agent 新版本支持在用户浏览器中直接运行代码的 agen2026-07-31 · 共同涉及 Datasette Agent、Datasette、Simon Willison
- datasette-apps 0.1a3 — Datasette2026-06-15 · 共同涉及 Datasette、datasette-apps、Simon Willison