Код подписи моей серверной политики в этой строке не выполняется:
credentialCondition = conditions[i]["x-amz-credential"];
(Обратите внимание, что этот код взят из примера Node, созданного сопровождающим FineUploader. Я изменил его, только заставив использовать подпись версии 4 без проверки параметра version
.)
Итак, он ищет параметр x-amz-credential
в теле запроса, среди других условий, но его там нет. Я проверил запрос в инструментах разработки и условия выглядят так:
0: {acl: "private"}
1: {bucket: "menu-translator"}
2: {Content-Type: "image/jpeg"}
3: {success_action_status: "200"}
4: {key: "4cb34913-f9dc-40db-aecc-a9fdf518a334.jpg"}
5: {x-amz-meta-qqfilename: "f86d03fb-1b62-4073-9458-17e1dfd8b3ae.jpg"}
Как видите, учетных данных нет. Вот мой код опций на стороне клиента:
var uploader = new qq.s3.FineUploader({
debug: true,
element: document.getElementById('uploader'),
request: {
endpoint: 'menu-translator.s3.amazonaws.com',
accessKey: 'mykey'
},
signature: {
endpoint: '/s3signaturehandler'
},
iframeSupport: {
localBlankPagePath: '/views/blankForIE9Support.html'
},
cors: {
expected: true,
sendCredentials: true
},
uploadSuccess: {
endpoint: 'success.html'
}
});
Что мне здесь не хватает?