首页 > 解决方案 > Safari 13.1.2 无法识别内容安全策略哈希

问题描述

我在 CSP 有这个脚本指令:

script-src 'sha256-0pXdwEz+mZ/xD0qLLNDMVgeorh4Qr4Fv06RA35mAlk4='

和一个脚本标签:

<script type="text/javascript" src="https://domain.xxx/frontframe.js" integrity="sha256-0pXdwEz+mZ/xD0qLLNDMVgeorh4Qr4Fv06RA35mAlk4=" crossorigin="anonymous"></script>

它适用于 chrome 和 firefox,但不适用于 safari,除非我将 CSP 更改为:

script-src 'self' 'sha256-0pXdwEz+mZ/xD0qLLNDMVgeorh4Qr4Fv06RA35mAlk4='

没有指令'self'我得到的错误是:

Refused to load https://domain.xxx/frontframe.js because it does not appear in script-src directive of the Content Security Policy.

我做错了什么还是野生动物园的常见怪癖之一?我的目标是只加载具有有效 sha256 值的脚本,而不是任何其他的,指令“self”给出的可能性。

标签: safaricontent-security-policy

解决方案


在 CSP 级别 2.0 之前,哈希仅适用于内联脚本和样式。从 CSP 级别 3.0 开始,还允许对外部源使用散列。请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src。Safari 可能与 CSP 级别 3.0 的兼容性较差。


推荐阅读