在iFrame中嵌入Google Apps脚本

时间:2016-11-28 10:58:30

标签: javascript iframe google-apps-script same-origin-policy

我正在尝试将使用Google Apps脚本中的Javascript动态构建的页面嵌入到iFrame中的网站中,但iFrame的内容未显示。 Google Apps脚本具有同源策略,可防止其加载。

我想要做的是(我删除了完整链接):

<iframe src="https://script.google.com/a/macros/SCRIPT_ID"></iframe>

我得到的错误是:

Refused to display 'https://script.google.com/a/macros/SCRIPT_ID' 
in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.

有没有办法改变策略并加载iFrame中的内容?

2 个答案:

答案 0 :(得分:13)

Google刚刚启用了此功能。它已经在很长一段时间内处于“功能请求”状态。 Link here

您现在可以明确定义X-Frame-Options。

要允许在另一个域下嵌入,该选项应为HtmlService.XFrameOptionsMode.ALLOWALL

关于此主题的Google文档:

https://developers.google.com/apps-script/reference/html/html-output#setXFrameOptionsMode(XFrameOptionsMode)

示例:

function doGet() {
    return HtmlService.createTemplateFromFile('form.html')
        .evaluate() // evaluate MUST come before setting the Sandbox mode
        .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}

希望这有帮助!

答案 1 :(得分:2)

我在doPost响应表单上遇到此问题,仅在开发模式下,并通过在初始的doGet表单上将target =“_ self”更改为target =“_ top”来更正此问题。

CONSTRAINT [constraint1] 
PRIMARY KEY CLUSTERED ([id] ASC, [other_id] ASC) WITH (IGNORE_DUP_KEY = ON)