3

尽管设置了以下标题:

Access-Control-Allow-Origin: *
Content-Security-Policy: default-src 'self' 'unsafe-inline' *.speech.is http://bits.speech.is https://bits.speech.is http://speech.is

JavaScript 仍然阻止我访问 iframe.contentWindow.document:

Error: Permission denied to access property 'document'

speech.contentWindow.document在at之后从 Firefox 控制台http://bits.speech.is。Chrome 给出了更冗长但仍然神秘的内容:

SecurityError: Blocked a frame with origin "http://bits.speech.is" from accessing a frame with origin "http://208.113.212.187". Protocols, domains, and ports must match.
code: 18
message: "Blocked a frame with origin "http://bits.speech.is" from accessing a frame with origin "http://208.113.212.187". Protocols, domains, and ports must match."
name: "SecurityError"
stack: "Error: Blocked a frame with origin "http://bits.speech.is" from accessing a frame with origin "http://208.113.212.187". Protocols, domains, and ports must match.↵    at <anonymous>:2:21↵    at Object.InjectedScript._evaluateOn (<anonymous>:580:39)↵    at Object.InjectedScript._evaluateAndWrap (<anonymous>:539:52)↵    at Object.InjectedScript.evaluate (<anonymous>:458:21)"

有没有办法追踪这个安全策略是在哪里设置的?如何弄清楚我还缺少什么?

4

1 回答 1

2

我能找到的微调 CSP 的最佳方法是结合这两种方法:

  • 查看浏览器控制台
  • 配置 CSP 以发送 CSP 报告,因为它们有时包含更多详细信息可以控制消息

对于后者,您需要添加report-uri到您的 CSP 标头,我使用http://cspbuilder.info/唯一 URL 作为报告收集器。您也可以设置Content-Security-Policy-Report-Only变体,直到它开始工作。

如果您编写您正在使用的浏览器,这也会有所帮助。该消息看起来不像来自 Chrome 的 CSP 违规错误 - 它们比这个更冗长且真正有用

于 2013-11-04T14:18:58.023 回答