【问题标题】:403 forbidden error when using fetch in node.js在 node.js 中使用 fetch 时出现 403 禁止错误
【发布时间】:2020-12-08 00:35:49
【问题描述】:

我正在尝试从我的 index.js 文件中的“/razorpay”路由获取响应,并在 displayRazorpay() 中使用它 .为此,我使用了 fetch,但它显示了禁止的 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: 'sdfdsjfh2@ndsfdf.com',
            phone_number: '9899999999'
        }
    }
    const paymentObject = new window.Razorpay(options);
    paymentObject.open();
}

【问题讨论】:

    标签: javascript node.js razorpay


    【解决方案1】:

    这是 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')
    })
    

    【讨论】:

    • 我试过这个方法。如果我在 fetch 中使用 GET 请求,它会起作用。如果我在 fetch 中使用 POST 请求,它不起作用。那我在这里使用 POST 有错吗?
    猜你喜欢
    • 2021-01-13
    • 1970-01-01
    • 2022-07-15
    • 2015-11-13
    • 2023-03-05
    • 2016-01-12
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多