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