Um Nutzer vor schädlichem HTML- oder JavaScript-Code zu schützen, bietet Apps Script Verwendet iFrames, um HTML-Dienst-Webanwendungen oder benutzerdefinierte Nutzer in einer Sandbox auszuführen Benutzeroberflächen für Google Docs, Google Tabellen und Google Formulare. Der HTML-Dienst verwendet kein Sandbox ausführen, z. B. beim Generieren des Texts einer E-Mail.) Sandbox schränkt clientseitigen Code ein.
Sandbox Mode
Alle Sandbox-Modi mit Ausnahme von IFRAME
werden jetzt eingestellt. Apps, die eine ältere Sandbox verwenden
verwenden jetzt automatisch den neueren Modus IFRAME
. Wenn Sie Skripts haben,
mit den älteren Modi (NATIVE
und EMULATED
) entwickelt wurden, sollten Sie
folgen Sie der Migrationsanleitung,
im IFRAME
-Modus ordnungsgemäß funktionieren.
Die setSandboxMode
-Methode jetzt hat beim Aufrufen keine Auswirkung.
Einschränkungen im IFRAME-Modus
Der Sandbox-Modus IFRAME
basiert auf dem
iFrame-Sandboxing-Funktion
in HTML5 mit den folgenden Suchbegriffen erstellen:
allow-same-origin
allow-forms
allow-scripts
allow-popups
allow-downloads
allow-modals
allow-popups-to-escape-sandbox
allow-top-navigation-by-user-activation
: Dieses Attribut gilt nur für eigenständigen Skriptprojekten nutzen.
Das Keyword allow-top-navigation
, mit dem sich der Inhalt aufrufen lässt
Browser-Kontext auf oberster Ebene, ist eingeschränkt und nicht als Attribut im
Sandbox ausführen. Wenn Sie Ihr Skript weiterleiten müssen, fügen Sie einen Link oder eine Schaltfläche für das
Aktionen ausführen können.
Attribut „Linkziel“ festlegen
Im Modus „IFRAME
“ müssen Sie das Link-Zielattribut entweder auf
_top
oder _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>
Sie können dieses Attribut auch mit dem <base>
-Tag im head-Element überschreiben.
der zugehörigen Webseite:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
HTTPS für aktive Inhalte erforderlich
„Aktiv“ Inhalte wie Skripts, externe Stylesheets und XmlHttpRequests- HTTPS, nicht HTTP.