我使用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
1条答案
按热度按时间ehxuflar1#
很抱歉这么晚才答复,
我只是认为这是NextJS的默认行为。你已经设置好了,不用担心。相反,如果你想允许外部源获取你的Next API,还需要做一些定制