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);
これにヘッダーを追加する方法についてのアイデアやドキュメントはありますか?あなたは、「正規化されたAMZヘッダ」を含める必要があるので、あなたは、署名V2を使用している
yは何ですかそのカスタムヘッダーを使用して達成しようとしていますか? – error2007s
説明のために403の応答本文を調べましたか?多くのS3エラーは本体XMLに有益な情報を持っています。最も可能性の高い説明は、署名を計算するときに、追加ヘッダーが適切にまたは完全に考慮されていないということです。 –
あなたはそうです、@ Michael-sqlbot。私は質問を更新します。 –