我正在尝试在我的网站上使用 PayPals API 集成,但是每当我尝试加载页面时,我都会收到“拒绝应用内联样式,因为它违反了以下内容安全策略指令”错误,因此页面上没有实际加载任何内容,我在
Program.cs
和 app.UseSecurityHeaders(policyCollection);
中设置了安全标头,其中我将 policyCollection
减少到
var policyCollection = new HeaderPolicyCollection()
.AddContentSecurityPolicy(policy =>
{
policy.AddDefaultSrc()
.Self()
.From(allowedUris)
};
其中
allowedUris
是 URI 列表,包括 "https://paypal.com"
,但无论我做什么,我都无法加载任何 PayPal 资源,有谁知道我在这里是否做错了什么?
编辑 2 PayPal 响应 CSP 样式片段:
style-src 'self' https://*.paypal.com:* https://*.paypalobjects.com 'unsafe-inline';
根据错误信息,没有违反URI,它们都是内联样式和脚本。这些可以由某些脚本嵌入。检查控制台中的源。如果使用一些静态引用,则为它们添加哈希值可能是有意义的。否则,您可能必须替换或重写代码。如果这不起作用,您可能必须接受将“unsafe-inline”添加到 script-src 和 style-src。尽管这并不理想,但它比没有 CSP 好,特别是如果您锁定所有 fetch 指令。