tencentyun / qcloud-sdk-dotnet

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

cosXml.GenerateSignURL 在使用临时密钥的时候 生成的签名丢失了q-signature

zhuxi888 opened this issue · comments

使用临时密钥会丢失(永久密钥不会)

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);

发布了 v5.4.28 版本,修复了这里的正则问题,再集成试试