嵌入Braintree iframe遇CSP错误,是否需白名单c.paypal.com?
关于Braintree iframe加载PayPal脚本触发CSP错误的解答
核心结论
不需要在你的电商网站CSP中为c.paypal.com添加白名单,问题根源出在Braintree提供的iframe自身的CSP配置上。
问题分析
你的网站CSP已经设置了script-src http: https: 'unsafe-inline',这意味着允许加载所有HTTP/HTTPS源的脚本,c.paypal.com属于HTTPS源,本身是符合规则的。
但嵌入的Braintree iframe的CSP配置为:
content-security-policy: style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' *.braintreegateway.com *.braintree-api.com;
这个规则里的script-src只允许加载来自*.braintreegateway.com、*.braintree-api.com以及iframe自身域的脚本,完全没有包含c.paypal.com,所以当iframe尝试加载https://c.paypal.com/da/r/fb.js时,浏览器会直接触发CSP拦截错误。
解决建议
- 升级Braintree版本:你当前使用的是3.85.5版本的Hosted Fields,建议升级到最新稳定版,新版本大概率已经修复了这个CSP配置遗漏的问题,将
c.paypal.com加入到iframe的允许列表中。 - 联系Braintree支持:如果暂时无法升级,直接联系Braintree技术支持,反馈该版本iframe的CSP规则拦截PayPal脚本的问题,请求他们调整对应iframe的CSP配置。
内容的提问来源于stack exchange,提问作者Krt_Malta
相关产品推荐
相关产品推荐

