我使用braintree.dropin来创建信用卡表格的前端。
<head>
<meta charset="utf-8">
<script src="https://js.braintreegateway.com/web/dropin/1.12.0/js/dropin.min.js"></script>
</head>
<body>
<div id="dropin-container"></div>
<button id="submit-button">Request payment method</button>
<script>
// https://stackoverflow.com/a/133997/72437
function post(path, params, method) {
method = method || "post"; // Set method to post by default if not specified.
// The rest of this code assumes you are not using a library.
// It can be made less wordy if you use one.
var form = document.createElement("form");
form.setAttribute("method", method);
form.setAttribute("action", path);
for (var key in params) {
if (params.hasOwnProperty(key)) {
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", key);
hiddenField.setAttribute("value", params[key]);
form.appendChild(hiddenField);
}
}
document.body.appendChild(form);
form.submit();
}
var button = document.querySelector('#submit-button');
braintree.dropin.create({
authorization: '???',
container: '#dropin-container'
}, function (createErr, instance) {
button.addEventListener('click', function () {
instance.requestPaymentMethod(function (err, payload) {
post('/billing/subscribe/',
{
'csrfmiddlewaretoken': 'lDqtKKosE9yBGtKmFv4BSBvDCGEX1WPsY0JOy0XlZC5Vnc6zR5BQmuCzkhzeS1PJ',
'subscription_plan': 2,
'payload_nonce': payload.nonce
}
);
});
});
});
</script>
</body>
但是,提交信用卡信息后,我收到此警告消息。
跨源请求被阻止:同源策略禁止阅读 位于的远程资源 https://origin-analytics-sand.sandbox.braintree-api.com/cn2rcqfn435vtj63。 (原因:CORS请求未成功。)
尽管整个过程运行正常(我设法毫无问题地付款),但恐怕我应该修正警告,以避免出现任何安全漏洞。这是由post
函数调用引起的。
但是,我不知道发生这种警告的原因是什么,以及如何解决它。
此外,我页面的域为localhost
,并且我正在执行回传到localhost
域的操作。我以为这不是跨域问题? https://origin-analytics-sand.sandbox.braintree-api.com/cn2rcqfn435vtj63
警告从何而来?
有什么主意吗?
如果我在post
的回调函数范围之外执行称为instance.requestPaymentMethod
的函数,则不会发生跨域警告。当然,我不能这样做,因为我需要payload.nonce
的回调函数中的instance.requestPaymentMethod
。