0

在一个项目中,我们使用 Optimizely Web Experiments 集成进行 A/B 测试。Optimizely Web 带有一个相当不错的 Web 编辑器,它允许您直接在浏览器中修改 A/B 测试的变体。

现在,前段时间,出于安全原因,我们决定引入X-Frame-OptionsHTTP 响应标头,以防止我们的应用程序被加载到 iFrame 中。当然,这也会阻止 Optimizely Web Editor 加载我们的页面,因此我们不能再修改变体。

因此,我开始使用Content-Security-Policy标题并设置这些值:

default-src * 'unsafe-inline' 'unsafe-eval' data:; frame-ancestors 'self' app.optimizely.com www.optimizelyedit.com;

我知道这不是超级安全,但我只想让 Optimizely Web 编辑器加载我的页面。

现在,当我将页面加载到 Web 编辑器中时,我没有收到任何提及违反内容安全策略的警告。而不是这个,我得到一个DOMException.

webapp 使用 React.js 和 Express。静态资产通过不同的域交付。唯一发生在DOMExceptionOptimizely Web 编辑器中,似乎app.js是从第二个域提供的 .

Uncaught DOMException: Blocked a frame with origin "https://www.host-a.de" from accessing a cross-origin frame.

的标头与引用该 JavaScript 文件的初始 HTML 页面的Content-Security-Policy标头app.js完全相同。

我真的不明白,为什么我DOMException只在 Opimizely Web 编辑器中得到这个,而不是当我加载没有它的页面时,我也不知道如何防止它。你有想法吗?

4

1 回答 1

0

事实证明,这DOMException不是由Content-Security-Policy标题引起的。即使关闭安全标头后,我也会收到错误消息。

于 2021-05-12T11:30:46.753 回答