【发布时间】:2023-03-23 23:38:01
【问题描述】:
我想知道如何保护我的 api 路由。文档说,默认情况下,api 路由是相同的站点来源。
API 路由不指定 CORS 标头,这意味着它们仅在默认情况下是同源的。您可以通过使用 cors 中间件包装请求处理程序来自定义此类行为。 Next.js Documentation
但如果我使用像 Postman 这样的请求工具,我总是可以调用它并获得结果:
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
export default (req, res) => {
res.status(200).json({ name: 'John Doe' })
}
这怎么可能?我只想限制对我的应用程序的访问。
【问题讨论】:
-
非常感谢您清理问题。我想在我的数据库中保存一个秘密并在我的应用程序请求端点以确保只有应用程序可以获取数据时调用它。我只是不知道如何调用该秘密,因为我在客户端的应用程序中执行我的请求,这些请求将在代码中执行。我可以将秘密保存在 env 变量中,但如果请求来自我的应用程序,我需要在 api 上读取它。为此,我需要知道如何将请求检测为来自我的应用程序而不是来自任何其他来源的收入。你能告诉我如何检测吗?
-
(我对 Next.js 还是很陌生)如果我只是从我的 api 路由中获取代码并创建一个正常的函数,而我的 api 路由我会要求秘密怎么办?然后应用程序本身将使用正常功能,并且每个其他来源只有在他们有我提供的凭据时才能访问 api 端点。这种方法怎么样? (我只是不知道如何做我的数据库功能,因为它唯一的工作服务器端而不是客户端)
-
感谢您的回复。你有关于 req.header.host 的任何来源或例子吗?我是否正确地在我的 api 端点上的 if 语句中请求 req.headers.host 以验证它是我的应用程序执行请求?
标签: next.js