You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确设置Google Apps Script的XFrameOptionsMode实现iframe嵌入?

解决Google Apps Script Web应用无法嵌入iframe的问题

核心问题修正:XFrameOptionsMode调用位置错误

你当前代码里把html.evaluate()的结果传给HtmlService.createHtmlOutput(),这会覆盖之前的X-Frame-Options设置。正确的做法是直接对html.evaluate()返回的HtmlOutput对象调用setXFrameOptionsMode。

修正后的完整代码:

function doGet(e) {
  //URI PARAMETER VALUE(S)
  let mpage = 'mapp';
  if ('page' in e.parameters) {
    mpage = e.parameters['page'][0];
  }

  try {
    //TRY TO ENABLE THE WEB APP WITH CUSTOM DATA USAGE
    let html = HtmlService.createTemplateFromFile(mpage);
    html.data = { title: mpage, e: e };
    
    // 正确设置X-Frame-Options
    let htmlOutput = html.evaluate()
      .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
    htmlOutput.addMetaTag('viewport', 'width=device-width, initial-scale=1, shrink-to-fit=no');
    return htmlOutput;
  } catch (err) {
    //IF THERE IS AN ERROR, DISPLAY THE ISSUE
    const html = HtmlService.createHtmlOutput('Page Not Found : ' + JSON.stringify(err));
    return html;
  }
}

关键部署设置检查

代码修正后,必须确保Web应用的部署配置符合要求:

  • 打开Apps Script编辑器,点击右上角「部署」→「新部署」
  • 类型选择「Web应用」,版本选择「新建」
  • 「Execute as」选择「Me(你的账号)」
  • 「Who has access to the app」必须设置为**「Anyone, even anonymous」**(仅选「Anyone」可能会因域限制导致iframe加载失败)
  • 部署后复制新生成的Web应用URL,替换iframe中的旧链接

额外排查要点

  • 清除浏览器缓存:旧的X-Frame-Options响应头可能被缓存,导致新设置不生效
  • 确保嵌入页面使用HTTPS:Google Apps Script Web应用仅支持HTTPS,嵌入页面如果是HTTP会被浏览器阻止(混合内容限制)
  • 查看浏览器控制台错误:按F12打开开发者工具,切换到「控制台」标签,查看是否有CSP或X-Frame-Options相关的报错,精准定位问题

内容的提问来源于stack exchange,提问作者klewis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 16:05:07