angularjs - 如何防止Azure在SAS url中添加%3F?

标签 angularjs azure azure-storage

我有一个 SAS token ,看起来像

?sv=2017-04-17&ss=b&srt=o&sp=rw&se=2017-11-13T21:36:10Z&st=2017-10-13T13:36:10Z&spr=https&sig=abcd

问题是我已经在 SAS token 中添加了“?”,但 azure 服务正在返回这样的 url

var sasUrl = blobService.getUrl(container, file.name, sas);

网址:

https://container.blob.core.windows.net/demo/The%20Fall%20%5B1%20Minute%20Short%20Film%5D.mp4?%3Fsv=2017-04-17&ss=b&srt=o&sp=rw&se=2017-11-13T21%3A36%3A10Z&st=2017-10-13T13%3A36%3A10Z&spr=https&sig=abcd

我想要的是从 SAS url 中删除“%3F”,我该怎么做。

最佳答案

问题的出现是因为不同的 SDK 生成 SAS token 的方式不同。如果您使用 .Net SDK,它会在 token 中添加 ?,但是如果您使用 Node SDK,它不会添加此字符。由于 Node SDK 不会在前面添加此字符,因此当 SDK 创建 blob url 时,它只是对此 SAS token 值进行 URL 编码(这就是它将 ? 转换为 %3F 的原因)并将该值添加为查询字符串参数。

要解决此问题,您可以检查 SAS Token 中的第一个字符是否为 ? 字符。如果存在,那么您可以通过删除第一个字符来创建一个子字符串。您可以执行以下操作:

var sasToken = "?sv=2017-04-17&ss=b&srt=o&sp=rw&se=2017-11-13T21:36:10Z&st=2017-10-13T13:36:10Z&spr=https&sig=abcd"
if (sasToken.charAt(0) === "?") {
    sasToken = sasToken.substr(1);
}

关于angularjs - 如何防止Azure在SAS url中添加%3F?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46764038/

相关文章:

javascript - AngularJS $scope.form.$subscribed 显示 true

php - Azure 网站 PHP 5.6 IIS 8.0 setlocale 函数问题

.net - 垃圾收集多少就太多了

angularjs - 自定义 angular-ui-grid 中选择的外观

angularjs - 当ui-grid中数据少于10行时如何禁用外部分页?

Azure 存储帐户 - 只读组

Azure监控: How to create dashboard that show amount of storage left in a storage account?

特定文件夹结构中的文件的 Azure 存储

asp.net-mvc - IE9 从 URL 中删除 # 部分(适用于 Firefox!)

Azure函数: How to run Linux Consumption Zip Deploy?