80 ≈ 28 KB;1000 ≈ 127 KB;3000 以上编译变慢
⚠️ 开启后,这份产物总共只允许固定台数的设备使用
(默认 3 台,由服务端 MAX_DEVICES 决定)——
它不是「同时在线人数」上限,超出的访客会被直接拒绝、页面空白。
挂在公网网站上给所有访客用的产物,请不要开启。
公网场景请用「域名白名单 + 有效期 + 吊销」控制。
「授权被拒」很高时,通常是域名白名单配错或设备槽位占满, 进「我的产物」看失败原因分布即可定位。
默认情况下,产物在访客浏览器里直接向授权接口换取密钥。这条路径的弱点在于:
攻击者可以用自己的服务器反代授权接口,绕过域名校验。
配上 API Key 后,密钥只能由你自己的服务器换取,
盗版者扒走产物也拿不到密钥。需要你的站点有后端。
// 你的后端:用 API Key 换密钥,再交给前端
const r = await fetch('/api/license', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer <你的 API Key>'
},
body: JSON.stringify({
artifactId: '<产物 id>',
host: req.headers.host // 透传访客的域名,服务端会照白名单核对
})
});
const { key } = await r.json(); // 拿到密钥后再交给你的前端页面
输入当前密码即可修改,不需要邮箱验证码。 忘记密码时,请到登录弹窗点「忘记密码?」用邮箱验证码重置。