在node.js中使用提取时出现403禁止的错误

问题描述

我正在尝试从index.js文件中的'/ razorpay'路由获取响应,并在displayRazorpay()中使用它 。为此,我正在使用访存,但它显示禁止的403错误。有人可以帮忙吗?我已经附加了“ / razorpay”路由,并在下面添加displayRazorpay()函数。我是node.js的新手,所以非常感谢您的帮助!

router.post('/razorpay',async function(req,res,next){
  if(!req.session.cart){
    return res.redirect('/shopping-cart');
  } 
  var cart = new Cart(req.session.cart);
  
  const payment_capture = 1;
  const amount = cart.totalPrice;
  const currency = 'INR';

    const options = {
      amount: amount * 100,currency,receipt: shortid.generate(),payment_capture,}
  
    try {
      const response = await razorpay.orders.create(options);
      console.log(response);
      
      res.json({
        id: response.id,currency: response.currency,amount: response.amount
      });
     
      
      
    } catch (error) {
      console.log(error);
    }       
        
}); 
async function displayRazorpay() {
   const data = await fetch('/razorpay',{method:'POST'}).then((t) =>
            t.json()
        );

   console.log(data);
    

    const options = {
        key: 'rzp_test_2eJE3rP3gEWqze',amount: 400,order_id: data.id,name: 'Donation',description: 'Thank you for nothing. Please give us some money',image: '/images/modilogo3.png',handler: function (response) {
            alert(response.razorpay_payment_id);
            alert(response.razorpay_order_id);
            alert(response.razorpay_signature);
        },prefill: {
            
            email: '[email protected]',phone_number: '9899999999'
        }
    }
    const paymentObject = new window.Razorpay(options);
    paymentObject.open();
}

解决方法

这是CORS的问题。确保在服务器端启用了cors。

由于您使用的是Express,因此这里是示例代码

首先安装cors: npm install cors

var express = require('express')
var cors = require('cors')
var app = express()

app.use(cors())

app.get('/products/:id',function (req,res,next) {
  res.json({msg: 'This is CORS-enabled for all origins!'})
})

app.listen(80,function () {
  console.log('CORS-enabled web server listening on port 80')
})