Почему fineUploader не отправляет свойство x-amz-credential среди условий запроса? - PullRequest
0 голосов
/ 07 ноября 2018

Код подписи моей серверной политики в этой строке не выполняется:

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'
    }
});

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 07 ноября 2018

Я исправил это, изменив код опций одним маленьким способом:

signature: {
    endpoint: '/s3signaturehandler',
    version: 4
},

Я указал version: 4 в разделе подписи. Не то чтобы это где-то задокументировано, но, очевидно, код на стороне клиента использует это как флаг для того, чтобы отправлять или не передавать ключевую информацию, необходимую серверу.

...