لحماية المستخدمين من عرض محتوى HTML أو JavaScript ضار، تستخدم خدمة Apps Script إطارات 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>
ضمن قسم head
في صفحة الويب الحاضنة:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
يجب استخدام HTTPS للمحتوى النشط
يجب تحميل المحتوى النشط، مثل النصوص البرمجية وأوراق الأنماط الخارجية وطلبات XmlHttpRequest، عبر HTTPS وليس HTTP.