2017-10-04 75 views
0

SAS令牌Azure存儲文件我生成這樣SAS令牌文件:使用與ViewerJs

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,數據, Chrome,Chrome擴展,https。

回答

0

您的C#代碼看起來不錯,我無法重現您發佈的錯誤。也許你可以使用Azure Storage Explorer生成SAS令牌並查看會發生什麼。

enter image description here

更新

如果URL中包含HTML特殊字符,則需要URL編碼,他們或只是複製從Azure存儲資源管理器的SAS網址進行了編碼。

enter image description here

+0

結果相同。另外,如果我刪除SAS查詢字符串,我看到完全相同的錯誤 –

+0

您是否嘗試清除瀏覽器緩存? –

+0

是的,我清除了緩存。我認爲我的Url for ViewerJs有問題。網址應該如下所示:domain + ViewerJS/#..../+ filePath。而這個錯誤是由於沒有SAS令牌的域部分發生的,只有文件部分在我的URL中有一個SAS令牌。 –