خدمة HTML: القيود

لحماية المستخدمين من عرض محتوى HTML أو JavaScript ضار، تستخدم "برمجة تطبيقات Google" علامات 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.