我们网站上的网页有时会出现一个奇怪的问题,供客户用来向我们付款。
主网页从服务器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”的值,而不是令牌化的信用卡号。
我们无法在我们的任何测试环境中重现此错误。我们只有在获得支持票时才遇到它,然后我们会在我们的应用程序日志中看到它。
我们当前的理论是,某些客户的浏览器出了一些问题,从而导致了问题。是否有人以前曾见过或遇到过这样的问题,或者不知道会发生什么情况?任何帮助或反馈都将不胜感激。