沙盒外掛預設是隔離的。要執行超出讀寫自身 KV 和儲存的操作,外掛必須在清單中宣告功能。
宣告功能
{
"slug": "plugin-hello",
"capabilities": ["content:read", "network:request"],
"allowedHosts": ["api.example.com"]
}
功能參考
| 功能 | 授予存取權限 |
|---|---|
content:read | ctx.content.get()、ctx.content.list() |
content:write | ctx.content.create()、ctx.content.update()、ctx.content.delete() |
taxonomies:read | ctx.taxonomies.getAll()、ctx.taxonomies.getTerms() |
media:read | ctx.media.get()、ctx.media.list() |
media:write | ctx.media.getUploadUrl()、ctx.media.upload()、ctx.media.delete() |
network:request | ctx.http.fetch() — 限制為 allowedHosts |
network:request:unrestricted | ctx.http.fetch() 無主機限制 |
users:read | ctx.users.get()、ctx.users.getByEmail()、ctx.users.list() |
email:send | ctx.email.send() |
沙盒強制執行的內容
- 功能門控。
- 儲存和 KV 作用域。
- 網路隔離。
- 無宿主繫結。
- 資源限制。
沙盒不強制執行的內容
- 授予功能內的行為。
- Node.js 上的營運商信任。
- 側通道。
功能同意
安裝時 EmDash 會顯示同意對話方塊。
建置時驗證
參見打包和發佈。