in src/AlibabaCloud.OSS.V2/Signer/SignerV4.cs [256:280]
private static string CanonicalizeHeaders(IDictionary<string, string> headers, List<string> additionalHeaders)
{
if (headers.Count == 0)
return string.Empty;
var addHeadersMap = new Dictionary<string, string>();
foreach (var header in additionalHeaders) addHeadersMap[header.ToLowerInvariant()] = string.Empty;
var sortedHeaderMap = new SortedDictionary<string, string>(StringComparer.Ordinal);
foreach (var header in headers)
{
if (header.Value == null) continue;
var lowerKey = header.Key.ToLowerInvariant();
if (IsDefaultSignedHeader(lowerKey) ||
addHeadersMap.ContainsKey(lowerKey))
sortedHeaderMap[lowerKey] = header.Value.Trim();
}
var sb = new StringBuilder();
foreach (var header in sortedHeaderMap) sb.AppendFormat("{0}:{1}\n", header.Key, header.Value.Trim());
return sb.ToString();
}