Để bảo vệ người dùng khỏi HTML hoặc JavaScript độc hại, dịch vụ HTML sử dụng iframe để tạo hộp cát cho các ứng dụng web hoặc giao diện người dùng tuỳ chỉnh cho Google Tài liệu, Google Trang tính và Biểu mẫu. Dịch vụ HTML không sử dụng hộp cát trong các trường hợp khác, chẳng hạn như tạo nội dung email. Hộp cát áp đặt các giới hạn đối với mã phía máy khách.
Chế độ hộp cát
Ngoại trừ IFRAME, tất cả các chế độ hộp cát đều ngừng hoạt động. Các ứng dụng từng sử dụng chế độ NATIVE hoặc EMULATED hiện tự động sử dụng chế độ IFRAME. Nếu tập lệnh của bạn được phát triển bằng một chế độ cũ, hãy làm theo hướng dẫn di chuyển để đảm bảo tập lệnh hoạt động đúng cách.
Phương thức setSandboxMode hiện không có hiệu lực khi được gọi.
Các hạn chế ở chế độ IFRAME
Chế độ hộp cát IFRAME dựa trên tính năng chạy iframe trong môi trường hộp cát trong HTML5, sử dụng các từ khoá sau:
allow-same-originallow-formsallow-scriptsallow-popupsallow-downloadsallow-modalsallow-popups-to-escape-sandboxallow-top-navigation-by-user-activation– Thuộc tính này chỉ được đặt cho các dự án tập lệnh độc lập.
Từ khoá allow-top-navigation (cho phép nội dung điều hướng bối cảnh duyệt web cấp cao nhất) bị hạn chế và không được đặt làm thuộc tính trong hộp cát. Nếu bạn cần chuyển hướng tập lệnh, hãy thêm một đường liên kết hoặc nút để người dùng thực hiện hành động.
Đặt thuộc tính mục tiêu liên kết
Ở chế độ IFRAME, bạn cần đặt thuộc tính mục tiêu của đường liên kết thành _top hoặc _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>
Bạn cũng có thể ghi đè thuộc tính này bằng thẻ <base> trong phần đầu của trang web bao quanh:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
HTTPS là giao thức bắt buộc đối với nội dung đang hoạt động
Nội dung"Đang hoạt động" như tập lệnh, biểu định kiểu bên ngoài và XmlHttpRequest phải được tải qua HTTPS chứ không phải HTTP.