开发者社区> 问答> 正文

url中包含response-content-disposition的签名问题

1. 问题描述:
将签名包含到url中进行数据下载,调试过程中发现 StringToSign 和预期的不一致。
url如下:
发帖为达到5,不能发链接:oss-cn-shanghai.aliyuncs.com/testossbucket/088A06F8BB8A48A2B129890394A2E444/C0102A7058F24FC39C6B610B404BCEA6?response-content-disposition=attachment; filename=\"5.txt\"; filename*=utf-8''5.txt&OSSAccessKeyId=PBPcrnZw0qj0BJTQ&Expires=1442474863&Signature=upJSdqMJrCUTnQbQ3mJcHPm%2fNQU%3d
我认为StringToSign应该是这样的:
GET


1442474863
/testossbucket/088A06F8BB8A48A2B129890394A2E444/C0102A7058F24FC39C6B610B404BCEA6?response-content-disposition=attachment; filename="5.txt"; filename*=utf-8''5.txt
但是验证错误,OSS服务端提示期望的StringToSign为:

GET


1442474863
/testossbucket/088A06F8BB8A48A2B129890394A2E444/C0102A7058F24FC39C6B610B404BCEA6?response-content-disposition
即没有response-content-disposition这个属性值的value部分的校验。

2. 疑问:
按照oss_api-reference.pdf,对于?后面要重写(override)返回请求的header时,是会检查key-value的,文档上的例子:
/BucketName/ObjectName?acl&response-content-type=ContentType & uploadId =UploadId
而事实上,OSS服务端只检查了key(response-content-disposition)
按照OSS服务端的提示,我计算signature时只校验key,就通过验证了。

之前做过S3存储同样请求的测试,是校验了response-content-disposition=attachment; filename="5.txt"; filename*=utf-8''5.txt

请问,这个是文档上已经有说明(只校验key,但是我可能没注意到),还是现在实现上的问题?以后会和S3类似,还是不会再更改呢?

展开
收起
东方若冥 2015-09-17 16:24:43 11748 0
1 条回答
写回答
取消 提交回答
  • Reurl中包含response-content-disposition的签名问题
    已经发现原因了,对于url的参数
    response-content-disposition=attachment; filename=\"5.txt\"; filename*=utf-8''5.txt
    值的部分要整体经过url编码,如attachment;   编码成attachment%3B+
    如果未经过url编码,OSS在获取时就会截断。

    总结:对于参数的Value要经过url编码,已经调通。结贴!
    2015-09-18 15:41:36
    赞同 1 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

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