cosXml.GenerateSignURL 在使用临时密钥的时候 生成的签名丢失了q-signature
zhuxi888 opened this issue · comments
zhuxi888 commented
使用临时密钥会丢失(永久密钥不会)
PreSignatureStruct preSignatureStruct = new PreSignatureStruct();
preSignatureStruct.appid = appid;
preSignatureStruct.region = region;
preSignatureStruct.bucket = bucket;
preSignatureStruct.signHost = true;
preSignatureStruct.key = key;
preSignatureStruct.httpMethod = "GET";
preSignatureStruct.isHttps = true;
preSignatureStruct.signDurationSecond = 600;
preSignatureStruct.queryParameters = null;
string requestSignURL = cosXml.GenerateSignURL(preSignatureStruct);
正常应该是
q-url-param-list=&q-signature=33874e7adecc577c01559bf2209f677fde5745fa
执行后变成
q-url-param-list=q-signature
有问题的代码段
Regex rgx = new Regex("q-url-param-list=.*&");
string paramlist = rgx.Match(sign).ToString().Split('=')[1].ToString();
paramlist = paramlist.Trim('&');
paramlist = URLEncodeUtils.Encode(paramlist).ToLower();
string encodedStr = "q-url-param-list=" + paramlist + "&";
sign = rgx.Replace(sign, encodedStr);
shawnnqin commented
发布了 v5.4.28 版本,修复了这里的正则问题,再集成试试