Configure/Modify Google 表单文档上的 CORS

Configure/Modify CORS on a Google Forms doc

我有一个 Google 表格,它嵌入到另一个网站(Thinkific.com 上的电子学习子网站)。当通过我们的子网站访问时,该表格工作正常(例如 https://our-site.thinkific.com/courses/xyz

但是,我们正在使用 Binu(最近更名为 Datafree)对移动网络上的子网站进行零评级(使其成为医护人员的免费资源)。

为此,网址会在其系统上转换为零费率子域,例如上面的 URL 会变成 https://our-binu-subdomain.datafree.co/courses/xyz

Binu 重写了 Thinkific 的响应内容,用 datafree 子域上的适当 URL 替换了所有 URLs/resource 链接,然后该站点是零费率(实际上是反向计费)。

在普通(付费)网站上,Google 表单嵌入到域为 https://docs.google.com/forms/foo 的 iFrame 中。

但是在 datafree 站点上,这将被重写为在 datafree 域上,并且由于 CORS,这现在在加载所需脚本时会出错:

给予:

有没有什么办法,也许在 Google Forms 配置中,我可以添加这个重写的域,以便 CORS 策略有效?

我不会这么说

AFAIK,Google 表单本身无法做到这一点,因为它可能会打开某些安全漏洞的大门。

可能的解决方法

我不知道如何使用您的设置对此进行测试,但可能的解决方法是使用 web app 从无数据站点接收简单的 HTTP POST 请求。然后,网络应用程序可以填充电子表格,甚至可以根据需要提交表单。

这将涉及编写要在无数据站点上提供的 HTML 表单,然后该表单将在 HTML 表单上发送 HTTP POST 请求 submit 事件。此 HTML 本质上是 Google 表格的副本,因此根据您必须更改此表格的频率,这可能并不完全实用。虽然我确信可以编写另一个可以将表单转换为 HTML 的 Apps 脚本函数,以防万一这被证明是向您开放的不太理想的选项中最好的!

也许提交功能请求

也许值得为此提交一个功能请求:

https://issuetracker.google.com/

我不知道是否需要修改 CORS 配置的能力,因为这看起来不像是那种在产品级别上容易或不需要实现的东西,比如 Google 表单 (https://cloud.google.com/storage/docs/cross-origin),但也许他们可以提供一些其他解决方法。