HTTP 访问服务鉴权

最近更新时间:2023-09-13 16:55:06

我的收藏
HTTP 访问支持鉴定云开发的用户登录凭证,开发者在开启鉴权之后,可以在 HTTP 头部中加入 x-cloudbase-credentials: <登录凭证> 的方式调用云函数。

开启 HTTP 访问鉴权

在云开发控制台的 HTTP 访问服务管理页面,左侧的路径列表中,可以为各条路径启动或关闭鉴权:


说明
开启访问鉴权之后,没有鉴权信息,或者鉴权信息非法的请求,都会请求失败。

使用 SDK 获取 HTTP 鉴权头部

以 Web 端 SDK 为例,使用云开发支持的登录方式登录后,可以使用 Auth.getAuthHeader() 获取鉴权头部:
const cloudbase = require("@cloudbase/js-sdk");
const app = cloudbase.init({
env: "xxxx"
});

/**
执行登录流程,此处省略……
*/

const authHeader = cloudbase.auth().getAuthHeader();
// { 'x-cloudbase-credentials': '<credentials>' }

在请求中加入鉴权头部

我们使用 axios 向 HTTP 服务的 URL 发起一个 HTTP 请求,其中加入鉴权头部:
const axios = require("axios");
const cloudbase = require("@cloudbase/js-sdk");
const app = cloudbase.init({
env: "xxxx"
});

/**
执行登录流程,此处省略……
*/

const authHeader = cloudbase.auth().getAuthHeader();

axios({
method: "post",
url: "https://env-id.service.tcloudbase.com/xxxx",
data: {
/* ... */
},
headers: {
...authHeader
}
}).then((res) => {
//...
});
HTTP 请求示例:
POST /aaa/bbb HTTP/1.1
Host: env-id.service.tcloudbase.com
X-Cloudbase-Credentials: <credentials>
<其它头部>: <...>

<传输体...>