为了保护用户免受恶意 HTML 或 JavaScript 的提供,Apps 脚本 使用 iframe 对 HTML 服务 Web 应用或自定义用户进行沙盒化 Google 文档、表格和表单的界面。(HTML 服务不使用 沙盒。)沙盒 对客户端代码施加了限制。
沙盒模式
现在,除了 IFRAME
之外的所有沙盒模式都已停用。使用旧版沙盒的应用
模式现在自动使用较新的 IFRAME
模式。如果您有
是使用旧版模式(NATIVE
和 EMULATED
)开发的,您应
请按照迁移说明操作
它们在 IFRAME
模式下正常运行。
setSandboxMode
方法在调用时无效。
IFRAME 模式的限制
IFRAME
沙盒模式基于
iframe 沙盒功能
,并在 HTML5 中使用以下关键字:
allow-same-origin
allow-forms
allow-scripts
allow-popups
allow-downloads
allow-modals
allow-popups-to-escape-sandbox
allow-top-navigation-by-user-activation
- 此属性仅适用于 独立的脚本项目。
allow-top-navigation
关键字,允许内容在其
顶级浏览上下文、
沙盒如果您需要重定向脚本,请为
用户对其执行操作
设置链接目标属性
在 IFRAME
模式下,您需要将链接目标属性设为
_top
或 _blank
:
Code.js
function doGet() {
var template = HtmlService.createTemplateFromFile('top');
return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
top.html
<!DOCTYPE html>
<html>
<body>
<div>
<a href="http://google.com" target="_top">Click Me!</a>
</div>
</body>
</html>
您还可以使用 head 内的 <base>
标记替换此属性
部分:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
主动内容要求使用 HTTPS
“有效”内容 例如脚本、外部样式表和 XmlHttpRequests HTTPS(而非 HTTP)。