Как заблокировать внешние запросы к маршруту NextJS Api

Я использую NextJS API маршруты для проксирования пользовательского API, построенного на Python и Django, который еще не был полностью обнародован. Я использовал руководство на Vercel для добавления cors в качестве промежуточного ПО к маршруту, однако это не обеспечило точную функциональность, которую я хотел.

Я не хочу, чтобы любой человек мог сделать запрос к маршруту, это в некотором роде разрушает цель, но по крайней мере скрывает мой API ключ.

Вопрос

Есть ли лучший способ правильной остановки запросов, поступающих к маршруту из внешних источников? Любой ответ будет оценен по достоинству!

// Api Route
import axios from "axios";
import Cors from 'cors'

// Initializing the cors middleware
const cors = Cors({
  methods: ['GET', 'HEAD'],
  allowedHeaders: ['Content-Type', 'Authorization','Origin'],
  origin: ["https://squadkitresearch.net", 'http://localhost:3000'],
  optionsSuccessStatus: 200,
})

function runMiddleware(req, res, fn) {
  return new Promise((resolve, reject) => {
    fn(req, res, (res) => {
      if (res instanceof Error) {
        return reject(res)
      }

      return resolve(res)
    })
  })
}

async function getApi(req, res) {
  try {
    await runMiddleware(req, res, cors)

    const {
      query: { url },
    } = req;
      const URL = `https://xxx/api/${url}`;
      const response = await axios.get(URL, {
          headers: {
            Authorization: `Api-Key xxxx`,
              Accept: "application/json",
          }
      });
      if (response.status === 200) {
        res.status(200).send(response.data)
      }
      console.log('Server Side response.data -->', response.data)
    } catch (error) {
      console.log('Error -->', error)
      res.status(500).send({ error: 'Server Error' });
    }
}

export default getApi

Извините за столь поздний ответ,

Я просто думаю, что это поведение NextJS по умолчанию. Вы уже настроены, не беспокойтесь. Напротив, если вы хотите разрешить внешним источникам получать ваш Next API

, вам придется немного подстроиться.
Вернуться на верх