我在头部进行签名,获取到了Authorization,接着根据获取到的Authorization对oss发出请求。提示返回403错误,具体如下
<Error>
<Code>AccessDenied</Code>
<Message>OSS authentication requires a valid Date.</Message>
<RequestId>566552C8229E6BA1F6702799</RequestId>
<HostId>saas01.oss-cn-hangzhou.aliyuncs.com</HostId>
</Error>
获取到的签名我用官网的这个例子测试过,
import base64import hmacimport shah = hmac.new(
"OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV",
"PUT\nODBGOERFMDMzQTczRUY3NUE3NzA5QzdFNUYzMDQxNEM=\ntext/html\nThu, 17 Nov 2005 18:49:58 GMT\nx-oss-magic:abracadabra\nx-oss-meta-author:foo@bar.com\n/oss-example/nelson", sha)Signature = base64.b64encode(h.digest())print(
"Signature: %s" % Signature)
获取到的Authorization和官网是一样的,所以签名方法应该没错。但是用这个Authorization对OSS发出请求却出现上面的问题OSS authentication requires a valid Date
请问这是怎么回事,之前听说时间格式不对会出现这个问题,我设置的时间格式是正确的
另外如果按如下发送请求的话
PUT /nelson
HTTP/
1.0
Authorization
:OSS
44
CF9590006BF252F707:
26NBxoKdsyly4EDv6inkoDft/yA=
Content-
Md5
:
ODBGOERFMDMzQTczRUY3NUE3NzA5QzdFNUYzMDQxNEM=
Content-
Type
: text/html
Date
:
Thu,
17
Nov
2005
18
:
49
:
58
GMT
Host
: oss-example.oss-cn-hangzhou.aliyuncs.com
X-
OSS-
Meta-
Author
:
foo@bar.com
X-
OSS-
Magic
: abracadabra
头部中的Date是不被允许的,添加到头部会出现 Refused to set unsafe header "Date" 错误,去掉Date这个有影响吗
我这样设置xmlhttp.setRequestHeader("x-oss-date",date); 后会再报一个签名失败的错误 但是换成xmlhttp.setRequestHeader("Date",date);在postman上是可以请求成功的
更多参考OSS帮助文档,官网地址:https://help.aliyun.com/product/31815.html
我这样设置xmlhttp.setRequestHeader("x-oss-date",date); 后会再报一个签名失败的错误 但是换成xmlhttp.setRequestHeader("Date",date);在postman上是可以请求成功的
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。