【发布时间】:2018-04-05 04:11:57
【问题描述】:
您好,当我尝试在 Symfony/Sylius 应用程序的结帐页面上显示卡片详细信息表单时,我收到了混合内容错误。我正在使用带有omnipay 桥的payum 进行sage pay checkout。
我收到混合内容错误的原因是因为我在父页面上提交了一个表单,该表单将令牌发送到以下路由:
payum_capture_do:
path: /payment/capture/{payum_token}
defaults: { _controller: sylius.controller.payum.capture:doAction }
# schemes: [https]
route 依次执行一些代码来获取 iFrame src。然后将响应馈送到 iFrame src。这实际上都是通过 JS 直接将表单提交到 iFrame 来完成的:
let form = jQuery("form[name='sylius_checkout_complete']");
if (form.length) {
form.attr('target', 'card-details');
form.submit();
}
然后出现问题,因为 payum 路由不是 https 路由,因此 iFrame 由于混合内容错误而被阻止显示内容。这个错误如此奇怪的原因是,如果我强制路由到 https(正如您从评论中看到的那样),它会返回“重定向过多”并使页面崩溃(尽管它确实显示在 iFrame )。我认为这是因为它首先尝试 http 然后 https 并且因为付款只能在这样做变得无效时才能被捕获。
任何帮助将不胜感激。
【问题讨论】:
-
它看起来既不像 Payum 也不像 Sylus 错误,一定是 Symfony 安全设置有问题。
-
我尝试过像这样更新安全设置:`支付:模式:^/payment.*方法:[GET]匿名:~`和`-{路径:^/payment.*,角色: [ROLE_USER], requires_channel: https }` 到我的访问控制,没有骰子...
-
我遇到了完全相同的问题。有人找到解决方案了吗?
标签: symfony sylius omnipay payum