我在一个与 Authorize.net 托管支付/托管客户资料页面集成的电子商务平台上工作。在过去的六个月里,集成在夜间 UI 测试中运行良好。
昨晚,我们所有的测试都因内容安全策略错误而失败,表明 test.authorize.net 拒绝连接,因为在来自 https://test.authorize.net/ 的响应上设置了 Content-Security-Policy 标头将frame-ancestors指令设置为“none”。显然,这不适用于 iframe 实现,因此我试图弄清楚是否可以在商家门户中配置某种设置,以允许我的网站的域构建托管个人资料页面。
这是返回的完整 Content-Security-Policy 标头:
default-src 'self'; form-action 'self'; object-src 'none'; frame-ancestors 'none'; upgrade-insecure-requests; block-all-mixed-content
我在商家门户或他们的文档中没有看到任何有关配置有效框架祖先的内容,并且在过去几个月中我们的集成没有任何变化,因此,在不知道该标头是如何在其端构建的情况下,似乎就像他们突然设置了一个 CSP 标头,这将破坏任何 iframe 实现。
我尝试查看他们的文档,特别是“接受托管”开发人员指南这里,但我没有看到任何有关内容安全策略的内容。如果现在需要在某处指定有效祖先列表,我希望能够找到一些文档来指示在哪里/如何做到这一点。
更新:有人在 Authorize.net 开发者论坛上添加了类似的 thread,因此如果您来这里寻找答案,可能值得投票。如果该论坛讨论有任何结果,将更新这篇文章。
这个问题似乎在一夜之间就在沙盒区域得到了解决。当我发布到 https://test.authorize.net/customer/addPayment 端点时,我不再在响应中看到 Content-Security-Policy 标头,并且我的网站中不再出现该问题。然而,一些人在 Authorize.net 开发者论坛(问题更新中的链接)中评论说,他们今天在生产中出现了这个问题。
据我所知,Authorize.net 开始以与其“接受托管”端点的 iframe 集成方法不兼容的方式在内容安全策略标头上设置frame-ancestors 指令,并且现在已恢复该更改。