当按钮位于顶级文档中时,我有苹果支付网络工作费用。不幸的是,当在 iframe 中打开时,它会引发以下错误:
Trying to call an ApplePaySession API from a document with an different security origin than its top-level frame.
最佳答案
ApplePaySession
对象被创建为与与请求相关联的某个域相关联。当商家验证发生时,您收到的商家 session 与您在验证商家 session 时发布的域关联的 URL 相关联。如果顶级框架的域与与您的商家 session 相关联的域不匹配,那么请求将失败,就像您正在发生的那样。
我想这是为了防止恶意脚本注入(inject)帧,当商家 session 实际上与恶意脚本相关联时,试图欺骗用户为与顶级域相关联的商品和服务付费。
您可以通过让框架中的代码根据与您知道要将框架放入的页面关联的域来验证商家 session 来使事情正常进行,但这不是我尝试过的场景.
更新于 12/01/2017
如本文下方的评论所述,不支持将 Apple Pay 与框架一起使用。
关于stripe-payments - 苹果支付网络支持 iframes 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39416025/