加 sandbox 属性后 iframe 白屏或脚本不执行,是因为浏览器立即启用最严限制:拒绝解析 html、拦截所有脚本、丢弃表单和内联事件;即使 sandbox="" 也生效,且必须在插入 dom 前设置权限,如 allow-scripts 才能执行外链脚本。

为什么加了 sandbox 属性 iframe 就白屏或脚本不执行
因为 sandbox 属性一出现(哪怕值为空,如 sandbox="" 或仅 sandbox),浏览器就立刻启用最严限制:拒绝解析 HTML 内容、拦截所有脚本、静默丢弃表单提交和内联事件。这不是 bug,是设计——它把 iframe 当作一个 origin 为 null 的全新上下文,连 DOM 构建都跳过。Network 面板常显示 net::ERR_BLOCKED_BY_RESPONSE,控制台却无报错。
验证方式很简单:document.querySelector('iframe').sandbox 返回空 DOMTokenList [],说明没开任何权限。
- 只写
<iframe sandbox src="widget.html"></iframe>→ 白屏,JS 不加载,HTML 不解析 -
sandbox="allow-scripts"是最低可用起点,至少让外链脚本(<script src="trusted.js"></script>)能跑 - 动态设置
iframe.sandbox = "allow-scripts"无效,必须在插入 DOM 前写死属性值
allow-scripts 单独启用时的硬限制
allow-scripts 只解禁脚本加载与执行,但不恢复配套行为。它不是“让 JS 正常运行”,而是“允许 JS 运行,但其他一切照旧锁死”。
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
-
onclick="alert(1)"、javascript:void(0)、<script>console.log(1)</script>全部被屏蔽,且不报错 -
document.write()、同步XMLHttpRequest、eval()、Function构造器均禁用 - iframe 的
window.origin仍是"null",无法访问window.parent或父页 DOM -
localStorage、document.cookie可写但不持久——刷新即丢,DevTools 的 Application 面板显示不可靠,得用console.log(document.cookie)实测
哪些 allow- 权限组合真正可用,哪些必须避开
每个 token 都对应明确攻击面,不是可选项,是风险开关。生产环境永远按最小权限配,拒绝堆砌。
- 嵌第三方广告/图表(需 JS + 弹窗):
sandbox="allow-scripts allow-popups" - 嵌用户填写的问卷(需 JS + 表单提交):
sandbox="allow-scripts allow-forms",注意表单提交走 CORS,不能依赖同源 - 加载同源可信子页面(如
https://yourapp.com/admin.html):sandbox="allow-scripts allow-same-origin allow-forms",但必须确认协议+域名+端口全一致,且服务端返回正确Set-Cookie头(如SameSite=None; Secure) - 绝对不要写:
sandbox="allow-scripts allow-same-origin allow-popups allow-forms allow-top-navigation"—— 这等于关掉沙箱 -
allow-same-origin在不同源时会被浏览器静默忽略,加了也无效,还暴露配置疏漏
调试时最容易被忽略的三个细节
线上问题往往卡在这些边界点上,不是权限没开,而是验证方式或环境理解错了。
- DevTools 的 Application 面板对沙箱 iframe 的 storage 显示严重失真,标为 “(inactive)” 或空白不代表真没值,必须用控制台命令实测
- Safari 对
allow-popups-to-escape-sandbox支持不一致,新开窗口可能仍受限制,别依赖它绕过隔离 - React/Vue 中通过
dangerouslySetInnerHTML或v-html动态插入 iframe 时,容易漏掉sandbox属性,导致未受控内容直接执行脚本
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










