AWS身份验证需要有效的Date或x-amz-date标头卷曲

avi*_*oth 2 curl amazon-s3 amazon-web-services

我正在尝试通过传递AWS要求的必需标头来使用cURL进行简单图像上传,但是出现以下错误...

<Code>AccessDenied</Code><Message>AWS authentication requires a valid Date or x-amz-date header</Message>
Run Code Online (Sandbox Code Playgroud)

以下是我要传递的授权标头。

curl -X PUT -T "/some/file.jpg" \
-H "Host: bucket.s3.amazonaws.com" \
-H "Date: date" \
-H "Content-Type: image/jpg" \
-H "Authorization: AWS XXXXXXX:XXXXXXXXXX" \
  https://bucket.s3.amazonaws.com/
Run Code Online (Sandbox Code Playgroud)

下面是签名的制作方法,

signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`
Run Code Online (Sandbox Code Playgroud)

我尝试过在stringToSign和标头中传递日期,但是没有运气..请帮助..

avi*_*oth 5

解决了该问题。事实证明HTTP标头必须采用RFC 7231格式。我对其进行了格式化,并且可以正常工作。下面是我使用的格式,

date -jnu +%a,\ %d\ %h\ %Y\ %T\ %Z