跳到主要内容

云函数 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'
}
});

方案三:关闭身份验证

如果该云函数需要公开访问,可以关闭身份验证:

  1. 登录 云开发控制台
  2. 进入【环境】-【HTTP 访问服务】
  3. 找到对应的云函数路径,关闭身份验证
注意

关闭身份验证意味着任何人都可以访问该云函数,请确保云函数内部有适当的安全校验逻辑。

相似问题

  1. 云函数 HTTP 访问为什么需要身份验证?
  2. MISSING_CREDENTIALS 错误如何解决?
  3. 如何在 HTTP 请求中携带 Access Token?
  4. 云函数 HTTP 访问如何配置 API Key 认证?
  5. 开启身份验证后原来的接口不能用了怎么办?
  6. 云函数 HTTP 访问的安全配置有哪些?
  7. 如何关闭云函数 HTTP 访问的身份验证?
  8. 云开发 HTTP 访问服务支持哪些认证方式?
  9. Publishable Key 和 API Key 有什么区别?

相关文档