سرویس HTML: محدودیت ها
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
برای محافظت از کاربران در برابر ارائه HTML یا جاوا اسکریپت مخرب، برنامههای اسکریپت از iframe برای جعبه شنود برنامههای وب سرویس HTML یا رابطهای کاربری سفارشی برای Google Docs، Sheets و Forms استفاده میکند. (سرویس HTML در موقعیتهای دیگر، مانند تولید متن ایمیل، از جعبه ایمنی استفاده نمیکند.) جعبه ایمنی محدودیتهایی را بر روی کد سمت سرویس گیرنده اعمال میکند.
حالت Sandbox
همه حالتهای جعبه ایمنی به جز IFRAME
اکنون غروب هستند. برنامههایی که از حالتهای جعبه ایمنی قدیمیتر استفاده میکنند، اکنون از حالت جدیدتر IFRAME
بهطور خودکار استفاده میکنند. اگر اسکریپتهایی دارید که با استفاده از حالتهای قدیمیتر ( NATIVE
و EMULATED
) ساخته شدهاند، باید دستورالعملهای انتقال را دنبال کنید تا مطمئن شوید که در حالت IFRAME
به درستی کار میکنند.
روش setSandboxMode
اکنون هنگام فراخوانی هیچ تاثیری ندارد.
محدودیت در حالت IFRAME
حالت جعبه ایمنی IFRAME
بر اساس ویژگی sandboxing 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 برای محتوای فعال مورد نیاز است
محتوای «فعال» مانند اسکریپت ها، شیوه نامه های خارجی، و درخواست های XmlHttp باید از طریق HTTPS بارگیری شوند، نه HTTP.
جز در مواردی که غیر از این ذکر شده باشد،محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2025-08-29 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2025-08-29 بهوقت ساعت هماهنگ جهانی."],[[["\u003cp\u003eApps Script utilizes iframes to sandbox HTML service web apps and custom interfaces for Google products, protecting users from malicious code.\u003c/p\u003e\n"],["\u003cp\u003eAll sandbox modes except \u003ccode\u003eIFRAME\u003c/code\u003e are sunset; existing scripts using older modes automatically transition to \u003ccode\u003eIFRAME\u003c/code\u003e, and developers should migrate their code accordingly.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eIFRAME\u003c/code\u003e sandbox mode, based on HTML5 iframe sandboxing, imposes limitations on client-side code with specific allowances and restrictions.\u003c/p\u003e\n"],["\u003cp\u003eTo redirect users in \u003ccode\u003eIFRAME\u003c/code\u003e mode, use links or buttons with \u003ccode\u003etarget="_top"\u003c/code\u003e or \u003ccode\u003e_blank"\u003c/code\u003e or utilize the \u003ccode\u003e<base>\u003c/code\u003e tag to override this behavior.\u003c/p\u003e\n"],["\u003cp\u003eActive content like scripts and external stylesheets within the sandboxed environment must be loaded over HTTPS to ensure security.\u003c/p\u003e\n"]]],[],null,["# HTML Service: Restrictions\n\nTo protect users from being served malicious HTML or JavaScript, Apps Script\nuses iframes to sandbox HTML-service web apps or custom user\ninterfaces for Google Docs, Sheets, and Forms. (The HTML service does not use a\nsandbox in other situations, like generating the body of an email.) The sandbox\nimposes limitations on client-side code.\n\nSandbox Mode\n------------\n\nAll sandbox modes are now sunset except for `IFRAME`. Apps using older sandbox\nmodes now use the newer `IFRAME` mode automatically. If you have scripts that\nwere developed using the older modes (`NATIVE` and `EMULATED`), you should\nfollow the [migration instructions](/apps-script/migration/iframe) to ensure\nthey function properly under the `IFRAME` mode.\n\nThe [`setSandboxMode`](/apps-script/reference/html/html-output#setSandboxMode(SandboxMode))\nmethod now has no effect when called.\n\nRestrictions in IFRAME mode\n---------------------------\n\nThe `IFRAME` sandbox mode is based on the\n[iframe sandboxing](https://html.spec.whatwg.org/#attr-iframe-sandbox) feature\nin HTML5, using the following keywords:\n\n- `allow-same-origin`\n- `allow-forms`\n- `allow-scripts`\n- `allow-popups`\n- `allow-downloads`\n- `allow-modals`\n- `allow-popups-to-escape-sandbox`\n- `allow-top-navigation-by-user-activation` - This attribute is only set for [stand-alone script projects](/apps-script/guides/standalone).\n\nThe `allow-top-navigation` keyword, which allows the content to navigate its\ntop-level browsing context, is restricted and not set as an attribute in the\nsandbox. If you need to redirect your script, add a link or a button for the\nuser to take action on instead.\n\n### Setting the link target attribute\n\nIn the `IFRAME` mode you need to set the link target attribute to either\n`_top` or `_blank`: \n\n### Code.js\n\n function doGet() {\n var template = HtmlService.createTemplateFromFile('top');\n return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);\n }\n\n### top.html\n\n \u003c!DOCTYPE html\u003e\n \u003chtml\u003e\n \u003cbody\u003e\n \u003cdiv\u003e\n \u003ca href=\"http://google.com\" target=\"_top\"\u003eClick Me!\u003c/a\u003e\n \u003c/div\u003e\n \u003c/body\u003e\n \u003c/html\u003e\n\nYou can also override this attribute using the `\u003cbase\u003e` tag within the head\nsection of the enclosing web page: \n\n \u003c!DOCTYPE html\u003e\n \u003chtml\u003e\n \u003chead\u003e\n \u003cbase target=\"_top\"\u003e\n \u003c/head\u003e\n \u003cbody\u003e\n \u003cdiv\u003e\n \u003ca href=\"http://google.com\"\u003eClick Me!\u003c/a\u003e\n \u003c/div\u003e\n \u003c/body\u003e\n \u003c/html\u003e\n\n### HTTPS required for active content\n\n[\"Active\" content](https://developer.mozilla.org/en-US/docs/Security/MixedContent#Mixed_active_content)\nlike scripts, external stylesheets, and XmlHttpRequests must be loaded over\nHTTPS, not HTTP."]]