javascript - 如何将 codeigniter 的 CSRF token 传递给 Paypal Express Checkout?

标签 javascript php codeigniter paypal csrf-protection

我正在将 Paypal Express Checkout 与服务器端 REST 集成到我的 codeigniter 网站中。 根据 Paypal 文档,我将以下内容添加到我的结帐页面:

<script src="https://www.paypalobjects.com/api/checkout.js"></script>
<script>
    var CREATE_PAYMENT_URL  = 'https://#######/paypal/create';
    var EXECUTE_PAYMENT_URL = 'https://######/paypal/execute';

    paypal.Button.render({

        env: 'production', // Or 'sandbox'

        commit: true, // Show a 'Pay Now' button

        payment: function() {
            return paypal.request.post(CREATE_PAYMENT_URL).then(function(data) {
                return data.id;
            });
        },

        onAuthorize: function(data) {
            return paypal.request.post(EXECUTE_PAYMENT_URL, {
                paymentID: data.paymentID,
                payerID:   data.payerID
            }).then(function() {

                // The payment is complete!
                // You can now show a confirmation message to the customer
            });
        }

    }, '#paypal-button');
</script>

一切正常,但是,当我打开 codeigniter CSRF 保护时,checkout.js 使用 CREATE_PAYMENT_URL 对我的服务器进行的调用被拒绝,这是因为缺少 CSRF token 。我对 JavaScript 知之甚少,我需要一些帮助才能将 token 传递给 checkout.js,Paypal 的文档没有帮助。

我尝试过的:

在 codeigniter 配置上关闭 CSRF 有效! Paypal 快速结帐工作完美,但这不是一个选项,必须启用 CSRF 安全性。 在 codeignter 配置中从 CSRF 检查中排除了 URI 再次完美运行,但我不满意。必须有一种方法可以使用 CSRF token 保护对服务器的调用。 我希望我的问题很清楚,你可以提出一些解决方案。谢谢!

最佳答案

return paypal.request({
    method: 'post',
    url: CREATE_PAYMENT_URL,
    headers: {
        'x-csrf-token': CSRF_TOKEN
    }
}).then(function(data) {
    return data.id;
});

关于javascript - 如何将 codeigniter 的 CSRF token 传递给 Paypal Express Checkout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45109945/

相关文章:

Javascript 正则表达式 .match() 为空

javascript - 遍历多维 JSON 数据

php - 在 symfony 2 中实现用户事件

php - 使用 Codeigniter 在电子邮件中发送 pdf 而不将其保存在服务器上

php - 插入具有 1 个字段的多行 codeigniter

Javascript - 从数组中提取随机字符串并得到未定义

javascript - 无法将事件点击添加到 Select2 下拉列表中的选项

PHP Addslashes 在转义单引号时添加双反斜杠

php - PHP echo 有长度限制吗?

function - Codeigniter:3 个提交按钮,一个功能?