403 запрещенная ошибка при использовании выборки в node.js

#javascript #node.js #razorpay

#javascript #node.js #razorpay

Вопрос:

Я пытаюсь получить ответ от маршрута ‘/ razorpay’ в моем index.js файл и использовать его в 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: 'sdfdsjfh2@ndsfdf.com',
            phone_number: '9899999999'
        }
    }
    const paymentObject = new window.Razorpay(options);
    paymentObject.open();
}  

Ответ №1:

Это проблема CORS. Убедитесь, что вы включили cors на стороне вашего сервера.

Поскольку вы используете express, вот пример кода

Сначала установите cors: npm устанавливает 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')
})
  

Комментарии:

1. Я попробовал этот метод. Это работает, если я использую запрос GET в выборке. Это не сработает, если я использую POST-запрос в выборке. Тогда я ошибаюсь, используя POST здесь?