PayPal API集成遇CSP阻止SDK加载问题求助
解决PayPal API集成时的CSP内联样式错误
你的问题出在CSP配置的两个关键缺失:
- 仅通过
default-src配置无法覆盖PayPal所需的样式资源规则,尤其是内联样式权限不能通过默认规则继承; - 允许的域名列表漏掉了PayPal静态资源依赖的
paypalobjects.com。
根据PayPal官方要求的CSP规则,你需要单独配置style-src指令,补充完整的域名并显式允许内联样式。修正后的配置代码如下:
// 补充PayPal所需的完整域名 var allowedUris = new List<string> { "https://paypal.com", "https://*.paypalobjects.com" }; var policyCollection = new HeaderPolicyCollection() .AddContentSecurityPolicy(policy => { // 保留默认资源访问规则 policy.AddDefaultSrc() .Self() .From(allowedUris); // 单独配置样式资源规则,匹配PayPal的要求 policy.AddStyleSrc() .Self() .From("https://*.paypal.com") .From("https://*.paypalobjects.com") .UnsafeInline(); // 必须显式声明允许内联样式 });
如果后续还出现脚本加载错误,可补充script-src规则(部分PayPal组件需要内联脚本和eval权限):
policy.AddScriptSrc() .Self() .From("https://*.paypal.com") .From("https://*.paypalobjects.com") .UnsafeInline() .UnsafeEval();
关键原因说明
- CSP中,
default-src是各类资源的 fallback 规则,但'unsafe-inline'这类特殊权限不会自动继承到style-src、script-src等具体资源类型,必须在对应指令中显式声明; - PayPal的嵌入式组件会从
paypalobjects.com加载样式、图片等静态资源,仅允许paypal.com会导致部分资源被拦截。
内容的提问来源于stack exchange,提问作者A-Fairooz
相关产品推荐
相关产品推荐

