next.js 如何阻止对NextJS Api路由的外部请求

lx0bsm1f  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(251)

我使用NextJS API路由基本上只是代理一个用Python和Django构建的自定义API,这个API还没有完全公开,我使用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
ehxuflar

ehxuflar1#

很抱歉这么晚才答复,
我只是认为这是NextJS的默认行为。你已经设置好了,不用担心。相反,如果你想允许外部源获取你的Next API,还需要做一些定制

相关问题