控制台指南

最佳实践

开发者指南

数据湖存储

API 文档

SDK 文档

数据库文档捉虫大赛邀您参加,好礼多多> HOT

简介

C++ SDK 提供生成签名和获取请求预签名 URL 接口,详细操作请查看本文说明和示例。

说明:

  • 建议用户使用临时密钥生成预签名,通过临时授权的方式进一步提高预签名上传、下载等请求的安全性。申请临时密钥时,请遵循 最小权限指引原则,防止泄露目标存储桶或对象之外的资源。
  • 如果您一定要使用永久密钥来生成预签名,建议永久密钥的权限范围仅限于上传或下载操作,以规避风险。

生成签名

功能说明

计算并生成签名。

方法原型一

static std::string Sign(const std::string& secret_id,
                        const std::string& secret_key,
                        const std::string& http_method,
                        const std::string& in_uri,
                        const std::map<std::string, std::string>& headers,
                        const std::map<std::string, std::string>& params);

参数说明

参数名称 参数描述 类型
secret_id 开发者拥有的项目身份识别 ID,用以身份认证 String
secret_key 开发者拥有的项目身份密钥 String
http_method HTTP 方法,如 POST/GET/HEAD/PUT 等, 传入大小写不敏感 String
in_uri HTTP uri String
headers HTTP header 的键值对 map<string,string>
params HTTP params 的键值对 map<string,string>

返回结果说明

返回签名字符串,可以在指定的有效期内(通过 CosSysConfig 设置,默认60s)使用,返回空串表示计算签名失败。

方法原型二

static std::string Sign(const std::string& secret_id,
                        const std::string& secret_key,
                        const std::string& http_method,
                        const std::string& in_uri,
                        const std::map<std::string, std::string>& headers,
                        const std::map<std::string, std::string>& params,
                        uint64_t start_time_in_s,
                        uint64_t end_time_in_s);

参数说明

参数名称 参数描述 类型
secret_id 开发者拥有的项目身份识别 ID,用以身份认证 String
secret_key 开发者拥有的项目身份密钥 String
http_method HTTP 方法,如 POST/GET/HEAD/PUT 等,传入大小写不敏感 String
in_uri HTTP uri String
headers HTTP header 的键值对 map <string,string>
params HTTP params 的键值对 map <string,string>
start_time_in_s 签名生效的开始时间 uint64_t
end_time_in_s 签名生效的截止时间 uint64_t

返回结果说明

返回签名字符串,可以在指定的有效期内(通过 CosSysConfig 设置,默认60s)使用,返回空串表示计算签名失败。

获取请求预签名 URL

std::string GeneratePresignedUrl(const GeneratePresignedUrlReq& req)

参数说明

参数 参数描述
req GeneratePresignedUrlReq,GeneratePresignedUrl 操作的请求

HTTP_METHOD 枚举定义如下:

typedef enum {
    HTTP_HEAD,
    HTTP_GET,
    HTTP_PUT,
    HTTP_POST,
    HTTP_DELETE,
    HTTP_OPTIONS
} HTTP_METHOD;

预签名请求示例

可根据 CosConfig 类设置永久密钥或临时密钥发起预签名请求,具体配置文件内容请参见 快速入门 文档。

qcloud_cos::CosConfig config("./config.json");
qcloud_cos::CosAPI cos(config);

std::string bucket_name = "examplebucket-1250000000";
std::string object_name = "exampleobject";

// 添加存储桶名称和对象键,以及 HTTP 请求方法。
// 注意:用户无需对 object_name 进行编码操作
qcloud_cos::GeneratePresignedUrlReq req(bucket_name, object_name, qcloud_cos::HTTP_GET);
std::string presigned_url = cos.GeneratePresignedUrl(req); 

目录