Per proteggere gli utenti da HTML o JavaScript dannosi, il servizio HTML utilizza gli iframe per la sandbox delle app web o delle interfacce utente personalizzate per Google Documenti, Fogli e Moduli. Il servizio HTML non utilizza una sandbox in altre situazioni, ad esempio per generare il corpo di un'email. La sandbox impone limitazioni al codice lato client.
Modalità sandbox
Ad eccezione di IFRAME, tutte le modalità sandbox sono state ritirate. Le app che in precedenza utilizzavano le modalità NATIVE o EMULATED ora utilizzano automaticamente la modalità IFRAME. Se lo script è stato sviluppato con una modalità precedente, segui le
istruzioni di migrazione per assicurarti che funzioni
correttamente.
Il setSandboxMode
metodo ora non ha alcun effetto quando viene chiamato.
Limitazioni in modalità IFRAME
La modalità sandbox IFRAME si basa sulla funzionalità di sandbox
iframe in HTML5, utilizzando le seguenti parole chiave:
allow-same-originallow-formsallow-scriptsallow-popupsallow-downloadsallow-modalsallow-popups-to-escape-sandboxallow-top-navigation-by-user-activation: questo attributo è impostato solo per i progetti di script autonomi.
La parola chiave allow-top-navigation, che consente al contenuto di navigare nel contesto di navigazione di primo livello, è limitata e non è impostata come attributo nella sandbox. Se devi reindirizzare lo script, aggiungi invece un link o un pulsante su cui l'utente possa intervenire.
Impostare l'attributo target del link
Nella modalità IFRAME devi impostare l'attributo target del link su _top o _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>
Puoi anche sostituire questo attributo utilizzando il <base> tag all'interno della head
sezione della pagina web di inclusione:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
HTTPS richiesto per i contenuti attivi
"Attivi" contenuti come script, fogli di stile esterni e XmlHttpRequest devono essere caricati tramite HTTPS, non HTTP.