【问题标题】:Using Azure storage file with SAS token in ViewerJs在 ViewerJs 中使用带有 SAS 令牌的 Azure 存储文件
【发布时间】:2017-10-04 10:17:45
【问题描述】:

我以这种方式为文件生成 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。

【问题讨论】:

    标签: javascript azure azure-storage-files


    【解决方案1】:

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

    更新

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

    【讨论】:

    • 同样的结果。此外,如果我删除 SAS 查询字符串,我会看到完全相同的错误
    • 是的,我清除了缓存。我认为我的 ViewerJs 网址有问题。网址应如下所示:domain+ViewerJS/#../+filePath。发生此错误是因为域部分没有 SAS 令牌,只有文件部分在我的 Url 中有 SAS 令牌
    • 如果您的网址包含#,您需要将其编码为%23
    猜你喜欢
    • 2020-05-30
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 2022-07-19
    • 2018-02-09
    • 1970-01-01
    • 2019-12-05
    • 2021-11-20
    相关资源
    最近更新 更多