云函数 HTTP 访问配置身份验证后报 MISSING_CREDENTIALS 错误
当云函数配置了 HTTP 访问服务后,在环境配置中对该云函数开启身份认证,会导致原先可直接访问的 URL 报 MISSING_CREDENTIALS 错误。本文介绍该问题的原因和解决方案。
问题现象
- 云函数已配置 HTTP 访问服务路径,可通过 URL 直接访问
- 在环境配置中对该云函数开启身份认证后
- 访问该 URL 返回
MISSING_CREDENTIALS错误
问题原因
开启身份验证后,所有请求都需要携带有效的身份凭证(如 Access Token 或 API Key)才能访问云函数。这是云开发的安全机制,用于保护云函数不被未授权访问。
解决方案
方案一:使用 Access Token 认证
在请求头中携带 Access Token:
// 先通过登录获取 Access Token
const response = await fetch('https://your-env-id.api.tcloudbasegateway.com/v1/functions/your-function-name', {
headers: {
'Authorization': 'Bearer your-access-token'
}
});
Access Token 获取方法请参考 AccessToken 使用指南
方案二:使用 API Key 认证
如果是服务端调用,可以使用 API Key:
const response = await fetch('https://your-env-id.api.tcloudbasegateway.com/v1/functions/your-function-name', {
headers: {
'Authorization': 'Bearer your-api-key'
}
});
方案三:使用 Publishable Key 认证
如果是客户端公开访问场景,可以使用 Publishable Key:
const response = await fetch('https://your-env-id.api.tcloudbasegateway.com/v1/functions/your-function-name', {
headers: {
'Authorization': 'Bearer your-publishable-key'
}
});
方案三:关闭身份验证
如果该云函数需要公开访问,可以关闭身份验证:
- 登录 云开发控制台
- 进入【环境】-【HTTP 访问服务】
- 找到对应的云函数路径,关闭身份验证
注意
关闭身份验证意味着任何人都可以访问该云函数,请确保云函数内部有适当的安全校验逻辑。
相似问题
- 云函数 HTTP 访问为什么需要身份验证?
- MISSING_CREDENTIALS 错误如何解决?
- 如何在 HTTP 请求中携带 Access Token?
- 云函数 HTTP 访问如何配置 API Key 认证?
- 开启身份验证后原来的接口不能用了怎么办?
- 云函数 HTTP 访问的安全配置有哪些?
- 如何关闭云函数 HTTP 访问的身份验证?
- 云开发 HTTP 访问服务支持哪些认证方式?
- Publishable Key 和 API Key 有什么区别?