Curl AWS身份验证需要有效的日期或x-amz-Date标头

Curl AWS身份验证需要有效的日期或x-amz-Date标头,curl,amazon-web-services,amazon-s3,Curl,Amazon Web Services,Amazon S3,我试图通过传递AWS请求的所需标题来使用cURL进行简单的图像上传,但我得到以下错误 <Code>AccessDenied</Code><Message>AWS authentication requires a valid Date or x-amz-date header</Message> 下面是我要传递的授权标头 curl -X PUT -T "/some/file.jpg" \ -H "Host: bucket.s3.amazonaws

我试图通过传递AWS请求的所需标题来使用cURL进行简单的图像上传,但我得到以下错误

<Code>AccessDenied</Code><Message>AWS authentication requires a valid Date or x-amz-date header</Message>
下面是我要传递的授权标头

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/
下面是签名的方式

signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`

我试着在stringToSign和Header中传递日期,但没有成功。。请帮助解决此问题。。事实证明,HTTP头需要采用RFC 7231格式。我对它进行了格式化,它成功了。下面是我使用的格式


日期-jnu+%a、\%d\%h\%Y\%T\%Z

有类似问题,但得到:

日期必须采用ISO-8601“基本格式”

我用它来修复:


$(date-u+%Y-%m-%dT%H:%m:%S%z”)

在阅读了关于错误的Java/Joda版本的十几条其他评论后,这最终帮助了我。谢谢