在ViewerJs中使用带有SAS令牌的Azure存储文件

时间:2017-10-04 10:17:45

标签: javascript azure azure-storage-files

我以这种方式为文件生成SAS令牌:

    private string GeFileSASToken(CloudFile file)
    {
        SharedAccessFilePolicy policy = new SharedAccessFilePolicy()
        {
            Permissions = SharedAccessFilePermissions.Read | SharedAccessFilePermissions.Write | SharedAccessFilePermissions.List,
            SharedAccessStartTime = DateTime.Now,
            SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24),
        };
        return file.GetSharedAccessSignature(policy);
    }

如果我在浏览器中打开带有此令牌的文件链接,则一切正常并下载文件。但如果我尝试在Viewerjs中使用此链接:

<iframe src = "http://mydomain/ViewerJS/index.html#blob:https://myazureaccount.file.core.windows.net/myshare/mydirectorypath/myfile?SASTOKEN" width='300' height='300'></iframe>

我看到错误消息:

无法加载blob:https://myazureaccount.file.core.windows.net/myshare/mydirectorypath/myfile?SASTOKEN:仅支持协议方案的跨源请求:http,data,chrome,chrome-extension,https。

1 个答案:

答案 0 :(得分:0)

您的C#代码看起来很好,我无法重现您发布的错误。也许您可以使用Azure Storage Explorer生成SAS令牌,看看会发生什么。

enter image description here

<强>更新

如果您的网址包含HTML特殊字符,则需要对其进行网址编码,或者只是从已编码的Azure存储资源管理器中复制SAS网址。

enter image description here