【问题标题】:Google script origin request urlGoogle 脚本来源请求网址
【发布时间】:2018-07-11 04:40:46
【问题描述】:
【问题讨论】:
标签:
url
google-apps-script
cors
【解决方案1】:
对于现在遇到这个问题的人来说,我们在开发 Google 插件时也遇到了这个问题。我们需要按照 OP 提到的longString-#lu-script.googleusercontent.com 模式向我们的 oauth 客户端添加多个源 URL 以进行登录。
这很烦人,因为每个 url 都必须在授权 urls 字段中单独输入(不允许子域或通配符匹配)。这也是非常脆弱的,因为如果 Google 更改了他们托管我们的附加组件的 url,它就会中断。此外,我无法从 Google 找到任何文档来确认这些是脚本的来源。
【解决方案2】:
网址由主机以各种方式管理。在最基本的层面上,当你构建一个 web 服务器时,你决定调用什么以及调用它上的任何页面。谷歌和其他拥有服务器群和冗余数据中心的大型内容提供商,一切都会以不同的方式管理它,但出于您的目的,它实际上是相同的......您需要询问他们,因为他们是您的云内容的托管服务提供商。
可能与此相关的是,谷歌最近推出了一些处理 googleusercontent.com 域和 picassa 图片的更改(或者至少计划这样做。)所以谷歌支持论坛将是解决这个问题的方法寻求最新答案的问题,因为 URL 更改的原因通常是特定于那个时刻的,而不是您必须担心反复更改的事情。但同样,他们将需要确认这是否与最近计划的更改有关……或者不是。 :-)
当你发现一些东西时,你可以更新这个问题,以防它对其他人有用。 特别是,如果他们告诉你这不是一次性的事情来处理他们的变化。
【解决方案3】:
这更有可能与同源政策中的Changing origin 相关。如上所述:
页面可能会更改其自身的来源,但有一些限制。脚本可以将document.domain 的值设置为其当前域或其当前域的超域。如果将其设置为当前域的超域,则较短的域将用于后续来源检查。
例如,假设http://store.company.com/dir/other.html 的文档中的脚本执行以下语句:
document.domain = "company.com";
该语句执行后,页面可以通过http://company.com/dir/page.html的来源检查
所以,如前所述:
当使用document.domain 允许子域安全地访问其父域时,您需要在父域和子域中将document.domain 设置为相同的值。即使这样做只是将父域设置回其原始值,这也是必要的。否则可能会导致权限错误。