10

我已将我的安全策略定义为:

default-src 'self'; script-src 'self'; frame-src 'self';  style-src 'self' 'unsafe-inline'; 

(我仍然在几页的开头有 CSS)。

我对 Firefox 或 Chrome 没有任何问题(IE 还不支持 CSP),但是,当我尝试在 Safari 中进行测试时,我收到了一系列错误,例如:

Refused to load style from 'http://localhost/styles/alliance.css' because of Content-Security-Policy.
.
.
.
Refused to load image from 'http://localhost/images/Landing1.jpg' because of Content-Security-Policy.
.
.
.
Refused to load script from 'http://localhost/JQuery/jquery-1.7.2.min.js' because of Content-Security-Policy.

图片应该被 default-src 覆盖,另外两个被列为“Self”,所以我不知道为什么 Safari 不接受我的图片和脚本。我没有 Mac,所以我在 Windows (5.1.7) 上使用 Safari。

有任何想法吗?谢谢!

4

1 回答 1

7

Safari 5 在实现 CSP 方面有点落后。Safari 6 要好得多,但我不认为它是为 Windows 发布的。我认为您只是看到了实现错误。如果 WebKit nightlies 可用于 Windows,那可能是一个很好的测试替代方案。

不过,老实说,我不建议将X-WebKit-CSP标头提供给 Safari 5。Safari 6,是的,但 5 有点太破了,无法真正使用。

另请注意,您可以简化您的政策。两者script-srcframe-src都会回落到default-srcdefault-src 'self'; style-src 'self' 'unsafe-inline'应该有同样的效果。

于 2012-12-02T07:12:30.467 回答