لحماية المستخدمين من عرض محتوى HTML أو JavaScript ضار، تستخدم لغة "برمجة تطبيقات Google" إطارات iframe لوضع حماية لتطبيقات الويب لخدمة HTML أو واجهات المستخدم المخصّصة في "مستندات Google" و"جداول بيانات Google" و"نماذج Google". (لا تستخدم خدمة HTML وضع الحماية في حالات أخرى، مثل إنشاء نص رسالة إلكترونية). يفرض وضع الحماية قيودًا على التعليمات البرمجية من جهة العميل.
وضع الحماية
تم إيقاف جميع أوضاع وضع الحماية الآن باستثناء IFRAME
. إنّ التطبيقات التي تستخدم أوضاع الحماية القديمة
تستخدم الآن وضع IFRAME
الأحدث تلقائيًا. إذا كانت لديك نصوص برمجية
تم تطويرها باستخدام الوضعين القديمين (NATIVE
وEMULATED
)، عليك اتّباع تعليمات نقل البيانات للتأكّد من عملها بشكل صحيح في الوضع IFRAME
.
ليس للطريقة setSandboxMode
الآن أي تأثير عند طلبها.
القيود في وضع Iiframe
يعتمد وضع الحماية 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>
يمكنك أيضًا إلغاء هذه السمة باستخدام العلامة <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.