我有一個應用程序將文檔上傳到S3存儲桶。沒有問題存在,但是當我在請求中指定一些自定義頁眉像這樣:S3:自定義標題返回403
req.setHeader('x-amz-meta-purpose', 'purpose');
而寫匹配CORS規則鬥:
<CORSRule>
<AllowedOrigin>http://www.example.com</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
<MaxAgeSeconds>3000</MaxAgeSec>
<ExposeHeader>x-amz-meta-purpose</ExposeHeader>
</CORSRule>
我得到一個403響應。我忘了什麼?我的代碼工作正常,沒有添加自定義頭。
更新
我得到這樣的迴應:
<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
如何改變我的簽名,包括自定義頁眉?它目前是這樣的:
String stringToSign = 'PUT\n\n' + contentType + '\n' + now + '\n' + '/' + bucketname + '/' + lead.Id + '/' + fileName;
String encodedStringToSign = EncodingUtil.urlEncode(stringToSign, 'UTF-8');
Blob mac = Crypto.generateMac('HMACSHA1', Blob.valueOf(stringToSign), Blob.valueOf(secret));
String signed = EncodingUtil.base64Encode(mac);
有關如何添加標題的任何想法或文檔?
什麼是ÿ ou試圖實現使用該自定義標題? – error2007s
您是否檢查了403的響應主體以獲取解釋?許多S3錯誤在主體XML中有有用的信息。最可能的解釋是在計算簽名時沒有正確或完全考慮附加標題。 –
你說得對,@ Michael-sqlbot。我會更新這個問題。 –