我有一个 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/