首页 > 解决方案 > Cloudant couchapp 突然因 CSP 沙盒错误而失败

问题描述

我有一个在 Cloudant 免费计划上托管多年的 couchapp。几天前它开始失败:加载了 html、css 和 img 文件,但没有加载任何 js。浏览器控制台错误是:

Blocked script execution in 'https://b482ecaa-1ac2-4933-bec9-ecade207eea0-bluemix.cloudant.com/wxd/_design/app/index.html' because the document's frame is sandboxed and the 'allow-scripts' permission is not set.

index.html 响应标头包括Content-Security-Policy: sandbox

我在我的本地 LAN 上有这个数据库的副本,它没有这个问题,它的响应头不包括这个。

我根本没有更改 couchapp 或任何配置,所以 Cloudant 一定更改了一些配置。我注意到 Cloudant 于 10 月 14 日更新到 2.96,这与时间一致,但我在发行说明中没有看到任何提及沙盒或 Content-Security-Policy 的内容。

Couchdb 文档提到了与 CSP 相关的配置变量,但我找不到任何方法可以在 Cloudant 仪表板中更改这些配置设置,我也无法在 Cloudant 文档中找到任何提及它的内容。

这是 Cloudant 的配置错误吗?如果是,他们是否可能会扭转它?如果没有,有没有办法为我的站点更改此配置或任何其他解决方法?

更新:我有一个想法,也许我可以通过在文档中包含一个标签来覆盖它<meta http-equiv="Content-Security-Policy",但根据 CSP 文档,sandbox元标签中是不允许的。

标签: content-security-policycloudant

解决方案


不幸的是,CouchApps 将不再在 Cloudant 上运行。正如这篇博文中所解释的,一个新的Content-Security-Policy: sandbox标题已添加到所有附件提取中。这会阻止 JavaScript 执行,因此基于 JavaSript 的 CouchApp 将停止运行。

更改的原因是为了减轻这种CVE


推荐阅读