generateCanonicalHeaders method
Generate the canonical headers for the request.
参与签名的头部信息,至少包含 host 和 content-type 两个头部,也可加入其他头部参与 签名以提高自身请求的唯一性和安全性,此示例额外增加了接口名头部。
拼接规则: 头部 key 和 value 统一转成小写,并去掉首尾空格,按照 key:value\n 格式拼接; 多个头部,按照头部 key(小写)的 ASCII 升序进行拼接。
此示例计算结果是 content-type:application/json; charset=utf-8\nhost:cvm.tencentcloudapi.com\nx-tc-action:describeinstances\n。 注意:content-type 必须和实际发送的相符合,有些编程语言网络库即使未指定也会自动添加 charset 值,如果签名时和发送时不一致,服务器会返回签名校验失败。
Implementation
String generateCanonicalHeaders(Map<String, String> headers) {
final entries = headers.entries
.map((e) => MapEntry(e.key.toLowerCase(), e.value.toLowerCase()))
.toList()
..sort((a, b) => a.key.compareTo(b.key));
return '${entries.map((e) => '${e.key}:${e.value}').join('\n')}\n';
}