如何解决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.
我做错什么了吗?或者这是Safari常见的怪癖之一?我的目标是只加载具有有效sha256值的脚本,而不加载其他任何由指令“ self”赋予其可能性的脚本。
解决方法
在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版不兼容。
, iOS does not support SRI(integrity=
属性)上的Safari。因此,Safari基于上面的属性,因此不支持哈希值以允许外部脚本。
更新:尽管MDN的信息是Safari 12.1.1仍support SRI。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。