cas*_*inc 2 next.js serverless vercel authorization-header
该 API 没有什么特别的,但我有一个无服务器函数 POST API,它需要一个授权标头进行验证,然后写入数据库。
例如:
curl --location --request POST 'https://myserver.server.com/api/endpoint' \
--header 'Authorization: Bearer blahblahblahblah'
Run Code Online (Sandbox Code Playgroud)
在 Vercel 预览分支中,我能够使其正常工作,并且Authorization标头按预期传递到我的 API。当我在生产中对此进行测试时,Authorization标头将从请求中剥离(通过记录原始请求标头来确定)。预览版和生产版在标题方面有什么区别Authorization?我需要做什么才能在生产中转发标头?
任何帮助将不胜感激。提前致谢!
这似乎是 Vercel 中的一个错误(已通知支持人员),所以让我们等待他们的说法。我假设他们authorization自己消耗了标头并随后将其丢弃。有点奇怪的是,这种情况只发生在PROD中,但我们将会看到。
幸运的是,对我们来说,这很容易解决。我已经发布了更新后的函数来说明这一点。最主要的是使用除授权之外的任何标头
我正在使用x_authorization,但名称完全是任意的。
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
if (req.method === 'POST') {
//using 'custom' x_authorization header because the regular 'authorization' header is stripped by Vercel in PROD environments.
const { x_authorization } = req.headers
if (x_authorization === `Bearer ${process.env.CRON_API_KEY}`) {
//TODO: YOU DO YOUR THING HERE!!!
res.status(200).json()
} else {
res.status(401).end()
}
} else {
res.setHeader('Allow', 'POST')
res.status(405).end('Method Not Allowed')
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
996 次 |
| 最近记录: |