Vue实现银联支付,但是报交易可能存在风险

在vue项目中使用了vue.config.js处理了跨域操作,后台返回给我一个form表单,我直接在页面中添加这一段代码。并执行form表单的方法,银联支付方就告诉我们是交易可能存在风险


但是使用jquery就可以实现支付
image
询问过银联的防钓鱼域名,也包含我访问的域名
求问各位大佬 这是什么问题,应该如何解决呢

访问银联,为啥要在 vue.config.js处理跨域操作?form提交,本来就是支持跨域的。

form 表单提交,是支持跨域的,不做任何设置。

ajax提交(包括axios)不可以跨域。
你写的jQuery,其实是用的form的提交。

因为项目本身是要处理跨域操作,form表单是从接口中获取,然后添加到页面内,然后执行submit事件

我们是先通过接口获取到的form表单

你有尝试过$("#pay_form")[0].submit()吗,这个才是和Vue等价的代码,$("#pay_form").submit是jQuery封装的

从页面操作讲,你直接通过form触发,就相当于机器触发,正常用户是无感form的,你应该精确到内部button[type=submit]等价的元素的点击事件,模拟用户的点击,而不是form的submit

$("#pay_form")[0].submit()这种方式尝试了 可以正常访问


我这边获取到的是这样的form表单

我看了你写,你这样其实会累加div的,你在Vue的模板html里面增加一个指定id的div,每次操作这个div的innerHTML,submit之后清空,这样的话,其实和Vue完全没关系了

我发现一个问题,你的示例的submit,是点击之后触发的,你Vue里面是请求结束获取之后触发,这里面有一个用户点击时间差,时间过长会导致,用户点击触发的这个行为,失去意义,导致你后面的操作变成不安全,你也可以试试这方面的,这个我也只是了解,你可以修改你的demo,在获取渲染之后,直接触发原生submit,看能不能触发这个问题

您的意思是我在vue里直接获取到dom数据,进行渲染,然后直接执行submit()事件,有可能form表单没有加载完全,中间间隔了一个时间差是嘛

别试了,直接<iframe src="res.data">,你的获取的内容里面.在完成加载之后会自动触发submit的,不需要你干什么的

好的 我这就尝试下,感谢您的建议

其实,这是一个元素HTML的form表单,如何使用,如果提交的问题。
jQuery 是对原生form的提交的封装。

image
image


直接赋值给iframe 但是 好像没有用 并没有触发

对的 ,但是放到vue这边我个人就有点迷糊了,因为看着支付宝也是这样,但是可以正常运行

<iframe
      :src="`javascript:void(function(){document.open();document.write('${src}');document.close();}())`"
    ></iframe>


这种方法也还是不太能行,只能看见银联那边报这个

虽然vue不建议直接操作dom,但是并没有禁止直接操作dom。
document.getxxxx ,找到表单,然后就可以submit了。