"签名不匹配......"使用Fine-uploader将blob上传到Azure存储时

时间:2016-12-20 14:25:23

标签: azure fine-uploader azure-blob-storage

我发布了大量有关此错误的帖子,但我检查了所有内容,但仍未找到为什么Azure Blob Storage无法验证我的上传请求。 我使用Fine-Uploader生成请求:

 var uploaderInstance = $('#baz-fine-uploader').fineUploaderAzure({
            template: 'qq-template-manual-trigger',
            debug: true,
            request: {
                containerUrl: 'https://{MYACCOUNT}.blob.core.windows.net/client1',
                endpoint: 'https://{MYACCOUNT}.blob.core.windows.net/client1'
            },  
            // for Azure
            signature: {
                endpoint: "/api/upload/sas"
            },

            uploadSuccess: {
                endpoint: "/api/upload/success"
            },

            cors: {
                //all requests are expected to be cross-domain requests
                expected:true
            }
        });

我使用Azure SDK生成SAS URI,遵循Fine-uploader推荐的内容:

public string GetBlobSAS(string bloburi, string method)
    {
        try
        {

            var credentials = new StorageCredentials(STORAGE_ACCOUNT_NAME, STORAGE_ACCOUNT_KEY);                

            CloudBlockBlob blob = new CloudBlockBlob(new Uri(bloburi), credentials);
            var sas = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy()
            {
                Permissions = SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Create,
                SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(15)
            });


            return string.Format(CultureInfo.InvariantCulture, "{0}{1}", bloburi, sas);

        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex);
            throw ex;
        }
    }

我通过Azure门户创建了一个CORS访问策略,为了测试目的,我设置了#34;所有内容"允许的,尤其是" Allowed-Origin"字段到" *",因为我在我的locahost测试: CORS for specified container

最后,Fine-uploader向我询问SAS,获取它和 BOUM ,服务器回答:

    OPTIONS https://{MYACCOUNT}.blob.core.windows.net/client1/5f89f3ae-2d10-4e4e-8f3f-25d…QAY40QjKGoJcDsHolt8KXjB86chaTWg0f4t4%3D&se=2016-12-20T14%3A34%3A58Z&sp=rcw 403 (Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.)
XMLHttpRequest cannot load https://{MYACCOUNT}.blob.core.windows.net/client1/5f89f3ae-2d10-4e4e-8f3f-25d…QAY40QjKGoJcDsHolt8KXjB86chaTWg0f4t4%3D&se=2016-12-20T14%3A34%3A58Z&sp=rcw. Response for preflight has invalid HTTP status code 403

服务器响应是

    <Error>
<Code>AuthenticationFailed</Code>
<Message>
Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. RequestId:71041c4f-0001-00cf-69cc-5aa7de000000 Time:2016-12-20T14:21:35.7541369Z
</Message>
<AuthenticationErrorDetail>
Signature did not match. String to sign used was rcw 2016-12-20T14:34:58Z /blob/{MYACCOUNT}/client1/5f89f3ae-2d10-4e4e-8f3f-25d7b4760965.PNG 2015-12-11
</AuthenticationErrorDetail>
</Error>

真的不知道我现在还能做些什么.. 根据SO的帖子,我还尝试添加&#34;&amp; comp = list&amp; restype = container&#34;在我的SAS URI的末尾,尝试了几种组合,没有一种工作......

任何想法??

0 个答案:

没有答案