उपयोगकर्ताओं को नुकसान पहुंचाने वाले एचटीएमएल या JavaScript से बचाने के लिए, एचटीएमएल सेवा, iframe का इस्तेमाल करती है. इससे Google दस्तावेज़, Google Sheets, और Forms के लिए वेब ऐप्लिकेशन या कस्टम यूज़र इंटरफ़ेस (यूआई) को सैंडबॉक्स किया जा सकता है. एचटीएमएल सेवा, अन्य स्थितियों में सैंडबॉक्स का इस्तेमाल नहीं करती है. जैसे, ईमेल का मुख्य हिस्सा जनरेट करना. सैंडबॉक्स, क्लाइंट-साइड कोड पर पाबंदियां लगाता है.
सैंडबॉक्स मोड
IFRAME को छोड़कर, सभी सैंडबॉक्स मोड बंद कर दिए गए हैं. जिन ऐप्लिकेशन ने पहले NATIVE या EMULATED मोड का इस्तेमाल किया था वे अब अपने-आप IFRAME मोड का इस्तेमाल करते हैं. अगर आपकी स्क्रिप्ट को पुराने मोड के साथ डेवलप किया गया था, तो माइग्रेशन के निर्देशों का पालन करें. इससे यह पक्का किया जा सकेगा कि स्क्रिप्ट ठीक से काम कर रही है.
अब setSandboxMode तरीके को कॉल करने पर कोई असर नहीं पड़ता.
आईफ़्रेम मोड में पाबंदियां
IFRAME सैंडबॉक्स मोड, HTML5 में iframe सैंडबॉक्सिंग सुविधा पर आधारित है. इसमें इन कीवर्ड का इस्तेमाल किया जाता है:
allow-same-originallow-formsallow-scriptsallow-popupsallow-downloadsallow-modalsallow-popups-to-escape-sandboxallow-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>
इस एट्रिब्यूट की वैल्यू को बदला भी जा सकता है. इसके लिए, वेब पेज के हेड सेक्शन में मौजूद <base> टैग का इस्तेमाल करें:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
ऐक्टिव कॉन्टेंट के लिए एचटीटीपीएस ज़रूरी है
"ऐक्टिव" कॉन्टेंट, जैसे कि स्क्रिप्ट, बाहरी स्टाइलशीट, और XmlHttpRequests को एचटीटीपीएस पर लोड किया जाना चाहिए, न कि एचटीटीपी पर.