即使使用元标记,它仍然显示错误并且 Iframe 无法正常工作
<meta http-equiv="Content-Security-Policy" content="
default-src *;
style-src 'self' 'unsafe-inline';
script-src * 'self' https://checkout.stripe.com 'unsafe-inline'
connect-src : * 'self' https://checkout.stripe.com 'unsafe-inline'
frame-src : * 'self' https://checkout.stripe.com 'unsafe-inline'
'unsafe-eval'
;" >
链接参考:https://stripe.com/docs/security/guide#content-security-policy
错误:内容安全策略:页面设置阻止加载内联资源(“script-src”)
我也使用 header() 来设置它,但这也不起作用。任何帮助将不胜感激
答案 0 :(得分:0)
您缺少 Stripe 文档中描述的 img-src https://*.stripe.com
。
此外,单独的星号字符也不能用作“任何资源”(代码中错误使用的示例:default-src *
)。您需要将它用作 <host-source>
的一部分(例如 *.example.com
)。有关详情,请参阅 MDN docs。
答案 1 :(得分:0)
您的 CSP 有很多错误:
您遗漏了分号 ;
来分隔 script-src
/ connect-src
/ frame-src
指令列表。
:
在 connect-src : * ...
和 frame-src : * ...
从 'unsafe-inline'
和 'unsafe-eval'
指令中删除 connect-src
和 frame-src
,那里不支持这些指令
*
(星号)covers 任何主机源,如 https://checkout.stripe.com
和 wss://checkout.stripe.com
但这些并不重要,这些只是导致您真正拥有的 CSP:
default-src *;
style-src 'self' 'unsafe-inline';
script-src * 'self' 'unsafe-inline' 'unsafe-eval'
此 CSP 除了 data:
-Urls 使用之外没有任何限制。因此错误:
Content Security Policy: The page’s settings blocked the loading of a resource at inline (“script-src”)
不能属于您的 CSP。
看起来您已经在某处发布了 CSP 标头。因此,通过 <meta>
或 HTTP 标头的第二个 CSP 没有达到预期的效果。
检查您在浏览器中真正获得的 CSP 标头,教程是 here。
检查 Nginx 中的网络服务器配置的 add_header Content-Security-Policy ...
或 .htaccess
文件(如果是 Apache)是否存在 Header set Content-Security-Policy ...
。
或者您可能已经安装了一些插件来管理 CSP 标头。