奇怪的窗口数据交换问题

时间:2019-06-18 03:26:41

标签: javascript jquery ajax browser frontend

我们网站上的网页有时会出现一个奇怪的问题,供客户用来向我们付款。

主网页从服务器A加载,并且包含一个称为“令牌”的隐藏字段。该网页包含一个iframe,该iframe包含从服务器B加载的页面。从服务器B加载的iframe中的网页向服务器C发出AJAX请求。

从服务器B加载的iframe中的页面包含以下JavaScript / AJAX / jQuery代码:

$.ajax({
    type: "post",
    async: false,
    url: "https://serverC/getToken",
    crossDomain: true,
    data: {'input': ccNumber},      
    success: function(data) {
        var token = data.token;
    window.parent.postMessage(token, '*');
    },
    error: function(data) {
        alert("failed!");
    }   
});

主页(父窗口/框架)包含以下JavaScript代码:

function receiveMessage(event) {
document.getElementById("token").value = event.data;
}

window.addEventListener('message', receiveMessage, false);

基本上,加载到iframe中的页面包含一个HTML字段,用户可以在其中输入信用卡值。当用户单击按钮时,将验证输入的值,以确保它是有效的信用卡号,然后通过jQuery向服务器发出AJAX请求,并将该信用卡号传递给服务器,并收到回传的令牌然后在父窗口中放入一个称为“令牌”的隐藏字段。令牌是一个字母数字值,与输入的信用卡号长度相同。然后,​​用户单击按钮以在父窗口中提交表单。

发生的一个奇怪的问题是,有时从主网页(父窗口/框架)提交回我们服务器的令牌值是一个类似于“ setImmediate $ 0.2654587454983981981 $ 12”的值,而不是令牌化的信用卡号。

我们无法在我们的任何测试环境中重现此错误。我们只有在获得支持票时才遇到它,然后我们会在我们的应用程序日志中看到它。

我们当前的理论是,某些客户的浏览器出了一些问题,从而导致了问题。是否有人以前曾见过或遇到过这样的问题,或者不知道会发生什么情况?任何帮助或反馈都将不胜感激。

0 个答案:

没有答案