5

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

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

代码.gs

function doGet() {
  var t = HtmlService.createTemplateFromFile('index');
  t.heading = "My heading"
  return t.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME)
}

function validReferrer(ref) {
  Logger.log("Referrer is: "+ref)
  if (ref.indexOf('my-good-url.com') > - 1 ) {
    return true
}
else 
  return false
}

索引.html

<div>
<script>
  function onSuccess(a) {
  alert(a);
  }
  // referrer always begins https://script.google.com
  var ref = document.referrer || "doesn't have a referrer"; 
  google.script.run
  .withSuccessHandler(onSuccess)
  .validReferrer(ref)
</script>

<h1><?= heading ?></h1>
</div>

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

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

4

0 回答 0