尝试从安全来源与其顶级框架不同的文档启动 Apple Pay 会话
Trying to start an Apple Pay session from a document with an different security origin than its top-level frame
问题:
我的网站上有 ApplePay (https://www.example.com/order
),它可以使用并成功付款。
现在我尝试将包含 apple pay 的子域 (https://sub.example.com
) 中的 IFrame (src="https://www.example.com/order"
) 与表单集成,但出现错误
Trying to start an Apple Pay session from a document with an different security origin than its top-level frame
两个站点都使用了 Https。
主域(有和没有 www
)和子域在 apple 开发者帐户中验证。
您不能将 Frames 与 Apple Pay 一起使用,因为这被认为是不好的做法
这个错误可以在webkit中找到source
if (!ancestorDocument->securityOrigin().isSameSchemeHostPort(topOrigin))
return Exception { InvalidAccessError, "Trying to start an Apple Pay session from a document with an different security origin than its top-level frame." };
}
isSameSchemeHostPort
函数checks iframe 和页面的协议、域和端口相同
return a.protocol == b.protocol
&& a.host == b.host
&& a.port == b.port
因此,框架和页面的协议、域和端口必须相同才能将 iframe 与 ApplePay 集成。
问题:
我的网站上有 ApplePay (https://www.example.com/order
),它可以使用并成功付款。
现在我尝试将包含 apple pay 的子域 (https://sub.example.com
) 中的 IFrame (src="https://www.example.com/order"
) 与表单集成,但出现错误
Trying to start an Apple Pay session from a document with an different security origin than its top-level frame
两个站点都使用了 Https。
主域(有和没有 www
)和子域在 apple 开发者帐户中验证。
您不能将 Frames 与 Apple Pay 一起使用,因为这被认为是不好的做法
这个错误可以在webkit中找到source
if (!ancestorDocument->securityOrigin().isSameSchemeHostPort(topOrigin))
return Exception { InvalidAccessError, "Trying to start an Apple Pay session from a document with an different security origin than its top-level frame." };
}
isSameSchemeHostPort
函数checks iframe 和页面的协议、域和端口相同
return a.protocol == b.protocol
&& a.host == b.host
&& a.port == b.port
因此,框架和页面的协议、域和端口必须相同才能将 iframe 与 ApplePay 集成。