HTML 服务:限制

为了保护用户免受恶意 HTML 或 JavaScript 的提供,Apps 脚本 使用 iframe 对 HTML 服务 Web 应用或自定义用户进行沙盒化 Google 文档、表格和表单的界面。(HTML 服务不使用 沙盒。)沙盒 对客户端代码施加了限制。

沙盒模式

现在,除了 IFRAME 之外的所有沙盒模式都已停用。使用旧版沙盒的应用 模式现在自动使用较新的 IFRAME 模式。如果您有 是使用旧版模式(NATIVEEMULATED)开发的,您应 请按照迁移说明操作 它们在 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)。