跨域请求被阻止:Braintree dropin UI

时间:2018-08-28 20:16:08

标签: javascript braintree

我使用braintree.dropin来创建信用卡表格的前端。

payment_method.html(我用???屏蔽了授权值)

<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请求未成功。)

enter image description here

尽管整个过程运行正常(我设法毫无问题地付款),但恐怕我应该修正警告,以避免出现任何安全漏洞。这是由post函数调用引起的。

但是,我不知道发生这种警告的原因是什么,以及如何解决它。

此外,我页面的域为localhost,并且我正在执行回传到localhost域的操作。我以为这不是跨域问题? https://origin-analytics-sand.sandbox.braintree-api.com/cn2rcqfn435vtj63警告从何而来?

有什么主意吗?

我测试过的东西

如果我在post的回调函数范围之外执行称为instance.requestPaymentMethod的函数,则不会发生跨域警告。当然,我不能这样做,因为我需要payload.nonce的回调函数中的instance.requestPaymentMethod

0 个答案:

没有答案