Google Apps 脚本:检查请求的引用 URL(独立网络应用程序)

Jim*_*ine 5 google-apps-script google-apps-for-education

我想对(独立、匿名)Google Apps 脚本的引用网址进行检查,如果引用网址是两个已知的“良好”网址之一,则采取一些操作。

\n\n

有没有办法做到这一点?到目前为止,我想出的最好的方法涉及客户端代码,不幸的是document.referrer总是以 开头https://script.google.com,而不是带有 Google Apps 脚本链接的页面地址:

\n\n

代码.gs

\n\n
function doGet() {\n  var t = HtmlService.createTemplateFromFile(\'index\');\n  t.heading = "My heading"\n  return t.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME)\n}\n\nfunction validReferrer(ref) {\n  Logger.log("Referrer is: "+ref)\n  if (ref.indexOf(\'my-good-url.com\') > - 1 ) {\n    return true\n}\nelse \n  return false\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

索引.html

\n\n
<div>\n<script>\n  function onSuccess(a) {\n  alert(a);\n  }\n  // referrer always begins https://script.google.com\n  var ref = document.referrer || "doesn\'t have a referrer"; \n  google.script.run\n  .withSuccessHandler(onSuccess)\n  .validReferrer(ref)\n</script>\n\n<h1><?= heading ?></h1>\n</div>\n
Run Code Online (Sandbox Code Playgroud)\n\n

理想情况下,我想纯粹在服务器端运行检查。如本页所述“出于安全原因,内容服务返回的内容不会从 script.google.com 提供,而是重定向到位于 script.googleusercontent.com 的一次性网址”\xe2\x80\x94我的发现确实证实了这一点。有趣的是,当我将沙盒模式更改为 时NATIVE,根本不会返回引荐来源网址。我猜 caja 正在过滤我的客户端代码。

\n\n

真正的引用页面开始http://(通过发出在我的浏览器的网络调试器控制台中确认document.referrer)。

\n