开发者社区> 问答> 正文

GET请求签名问题

大家好:

我在开发c的oss api,签名算法有个疑问,请大侠帮忙。
在api文档里,有这样一段描述:
content-type 和 content-md5 在请求中不是必须的,
但是如果请求需要签名
验证,空值的话以回车符代替。

我的问题是,我要调用GetService(ListBuckets),这时content-type和content-md5就是不必须的,那除了分隔符\n以外,还要加一个\n是嘛?
报文如下:
* About to connect() to storage.aliyun.com port 80 (#0)
*   Trying 110.75.169.239... * connected
> GET / HTTP/1.1
Host: storage.aliyun.com
Accept: */*
Date:Fri, 07 Sep 2012 01:45:20 GMT
Authorization:OSS 3z4om38nk29w60axe69khvqg:PPbDhhsMQLiQ8zXin3EItzJCWBg=

< HTTP/1.1 403 Forbidden
< Date: Fri, 07 Sep 2012 01:45:20 GMT
< Content-Type: application/xml
< Connection: close
< Content-Length: 668
< Server: AliyunOSS
< x-oss-request-id: 504951B0ACD33BA4412B2A9F
<
<?xml version="1.0" encoding="UTF-8"?>
<Error>
  <Code>SignatureDoesNotMatch</Code>
  <Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
  <StringToSignBytes>47 45 54 0A 0A 0A 46 72 69 2C 20 30 37 20 53 65 70 20 32 30 31 32 20 30 31 3A 34 35 3A 32 30 20 47 4D 54 0A 2F </StringToSignBytes>
  <SignatureProvided>PPbDhhsMQLiQ8zXin3EItzJCWBg=</SignatureProvided>
  <StringToSign>GET


Fri, 07 Sep 2012 01:45:20 GMT
/</StringToSign>
  <OSSAccessKeyId>3z4om38nk29w60axe69khvqg</OSSAccessKeyId>
  <RequestId>504951B0ACD33BA4412B2A9F</RequestId>
  <HostId>storage.aliyun.com</HostId>
</Error>
* Closing connection #0



展开
收起
yeahspyme 2012-09-07 09:50:34 13910 0
2 条回答
写回答
取消 提交回答
  • 是指这个账号就是测试的,而不是指某个bucket哦?
    否则如果这个账号自己在用,要注意测试完后把贴出来的KEY禁用了,因为现在的KEY是对你阿里云账号下OSS的所有bucket都有权限的。(但很多人在提这事,希望能设置不同KEY的权限)
    2012-09-07 13:55:46
    赞同 展开评论 打赏
  • ReGET请求签名问题
    忘记贴我的accesskey了,测试帐号数据无所谓。
    OJWbkW U5ohhQ/rxYoDKojkqkZE=

    -------------------------

    ReGET请求签名问题
    在holic到帮助下,已经解决了。总结如下:
    content-md5、content-type如果不用到话,要加密到数据中HTTPMETHOD和DATE之间只有作为分割符到三个\n
    如果canonossheader不用,DATE和resource之间只有一个\n
    2012-09-07 09:52:50
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载