एचटीएमएल सेवा: पाबंदियां

उपयोगकर्ताओं को नुकसान पहुंचाने वाले एचटीएमएल या JavaScript से बचाने के लिए Apps Script, Google Docs, Sheets, और Forms के लिए एचटीएमएल-सेवा वेब ऐप्लिकेशन या कस्टम यूज़र इंटरफ़ेस को सैंडबॉक्स करने के लिए iframe का इस्तेमाल करती है. (एचटीएमएल सेवा, दूसरे मामलों में सैंडबॉक्स का इस्तेमाल नहीं करती, जैसे कि किसी ईमेल के मुख्य हिस्से को जनरेट करना.) सैंडबॉक्स, क्लाइंट-साइड कोड पर सीमाएं लागू करता है.

सैंडबॉक्स मोड

IFRAME को छोड़कर, सभी सैंडबॉक्स मोड अब बंद हो गए हैं. पुराने सैंडबॉक्स मोड का इस्तेमाल करने वाले ऐप्लिकेशन, अब अपने-आप नए IFRAME मोड का इस्तेमाल करते हैं. अगर आपके पास ऐसी स्क्रिप्ट हैं जिन्हें पुराने मोड (NATIVE और EMULATED) का इस्तेमाल करके बनाया गया है, तो माइग्रेशन के निर्देशों का पालन करें. इससे यह पक्का किया जा सकेगा कि वे IFRAME मोड में ठीक से काम करें.

setSandboxMode तरीके को कॉल करने पर, अब इसका कोई असर नहीं पड़ता.

iframe मोड में पाबंदियां

IFRAME सैंडबॉक्स मोड, HTML5 में iframe सैंडबॉक्सिंग की सुविधा पर आधारित है. इसके लिए, ये कीवर्ड इस्तेमाल किए गए हैं:

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 को एचटीटीपीएस पर लोड किया जाना चाहिए, न कि एचटीटीपी पर.