现在由于我们后端的配置非常不行, 宽带速度也不行, 不能做到让客户端传到后端再从后端传 OSS, 所以就想了个签名直传的方法.
看了基本上所有的官方文档都没能 resolve 这个问题我才来提问一下.
在 body 里面我用的是 key : file, value: 文件(现在做测试是一张200kb 左右, 名为 desktop.jpg 的照片)
如果我用的是 Header 里加 Authorization, value 是"OSS "+AccessKeyId + ":" + Signature , response 就会报错说 "OSS authentication requires a valid Date".
具体 generate signature 的代码是网上下载的一个叫 signature-demo 的里面给的. 我感觉问题可能出在
[font="]CanonicalizedResource 里面
之所以用到这个 demo 里面的代码是因为如果我用 OSS的
client.signatureUrl("/bucket/test/", {method : "PUT" }), 就会报SignatureDoesNotMatch.
如果是用
client.signatureUrl("bucket/test/filename", {method : "PUT"}), 也还是会报 SignatureDoesNotMatch.
源码里面 signatureUrl() 的第一个参数是 name, 具体是什么的 name 我一直不知道.
最后说一下我的环境, 请求都是用 PostMan 做的,全是 PUT 请求, OSS bucket 管理里面的跨域设置也都做好了, 最惨的是如果我用 client.signature("/bucket/test/filename", {method : "GET"}) 那我的这个 signature 就是 valide 的, 我就可以拿到文件.
搞到这里我都不知道如何做这个 signature 了.
具体的问题就是, 如何正确的写这个 signature 使得客户端可以直传文件上 OSS.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。