Files
Mujoco_WASM/docs/website-embedding.md
chenlin 0d986f60bd
web-platform-ci / Standalone decision service (no cloud credentials) (push) Has been cancelled
web-platform-ci / TypeScript, lint, unit, build (push) Has been cancelled
web-platform-ci / Playwright E2E (push) Has been cancelled
lekiwi-compatibility / cpu-compatibility (push) Has been cancelled
feat: release v1.0.2 LeKiwi 语言控制与网站嵌入
集成服务器托管模型、自然语言移动与有界抓放、内置 LeKiwi URL 导入和双摄像头;同步部署契约与指定域名 iframe 白名单,保留原有物理安全、会话及调用预算防护。

更新 npm 包及锁文件版本、CHANGELOG 与发布文档。提交前 typecheck、120 项定向前端测试和 44 项后端测试通过(3 项可选跳过);真实 v2 云模型抓放仍待单独验收,不包含运行密钥或构建产物。
2026-09-24 15:29:49 +08:00

60 lines
3.3 KiB
Markdown

# 网站 iframe 嵌入
2026-09-24 已为 `https://cadworld.robotquan.com` 开放嵌入。
## 同事网站接入
```html
<iframe
src="https://cadworld-sim.robotquan.com/"
title="CADWorld Sim"
style="width: 100%; height: 900px; border: 0;"
allow="fullscreen"
allowfullscreen
></iframe>
```
如需自动加载内置机器人,可使用 `https://cadworld-sim.robotquan.com/?robot=lekiwi-v1`。加载不会自动发起模型推理。
- 若父页面自身有 CSP,须在其 `frame-src` 中允许 `https://cadworld-sim.robotquan.com`。
- 默认不用 `sandbox`。若同事必须使用 sandbox,请至少评估 `allow-scripts allow-same-origin`:缺少脚本权限无法运行应用,缺少真实来源会导致同源请求/会话失效;下载等能力需按实际需求额外授权。
- 白名单仅包含精确 HTTPS 来源,不包含 HTTP、非默认端口、其他子域名或任意 `www` 前缀。多层嵌套时,每一层祖先都必须匹配白名单。
- 此设置允许展示和在 iframe 内操作,不授权父页面直接读取 iframe DOM 或调用模型 API。父子页面消息接口未实现。
## 响应头与会话
已移除 `X-Frame-Options: DENY`,未改成仍会阻止跨来源嵌入的 `SAMEORIGIN`,也不使用已废弃的 `ALLOW-FROM`。CSP 的其他指令不变,仅调整为:
```text
frame-ancestors 'self' https://cadworld.robotquan.com;
```
两个 HTTPS 站点属于相同 schemeful site `https://robotquan.com`,因此沿用 host-only、Secure、HttpOnly、SameSite=Strict 会话 Cookie。API Origin、Fetch Metadata、CSRF 和 CORS 限制不放宽。iframe 自身发出的同源请求通过,父页面直接访问 API 仍被拒绝。
## 发布与验证
本次为 **OpenResty 响应头热更新**,标识 `20260924T071933Z-iframe`。未重启后端,前后容器 ID 和启动时间相同;应用版本仍为 `20260924T065821Z-language-v2`。
- 本地 `deploy/cadworld/openresty.conf` 同步更新,未来新发布包会保留该白名单。
- 更新前后配置与备份位于服务器 `/opt/cadworld-sim/config-updates/20260924T071933Z-iframe/`,旧配置为 `previous.conf`。
- 已执行 `nginx -t`、reload、公网响应头与浏览器测试。**3/3 通过**:精确允许来源及安全头;允许来源内加载真实线上应用、会话建立/读取/销毁和 CSRF 防护;未授权同站子域名被 CSP 拒绝。
- 浏览器测试只合成指定来源的父页面 HTML,iframe 及 API 均访问真实网站;没有修改同事网站,也不代表已经验证其实际页面的 CSP/sandbox 等设置。
- 未触发付费推理。证据:`build/website-deployment/iframe-20260924T071933Z/`。
```bash
CADWORLD_PRODUCTION_TEST=1 npx playwright test \
-c web_platform/playwright.production.config.ts website.embed.production.spec.ts \
--output=build/website-deployment/iframe-20260924T071933Z/browser
```
旧发布包及其 manifest 没有被修改。重新发布原始旧包会覆盖热更新的头设置;应使用更新后的源码重新构建发布,或重新应用已验证的头配置。
仅回滚本次响应头(目标主机):
```bash
cp -p /opt/cadworld-sim/config-updates/20260924T071933Z-iframe/previous.conf \
/opt/1panel/apps/openresty/openresty/conf/conf.d/cadworld-sim.robotquan.com.conf
docker exec 1Panel-openresty-m72w nginx -t && \
docker exec 1Panel-openresty-m72w nginx -s reload
```