Использование файла хранилища Azure с токеном SAS в ViewerJs

Я генерирую токен 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>

Я вижу сообщение об ошибке:

Не удалось загрузить большой двоичный объект: https://myazureaccount.file.core.windows.net/myshare/mydirectorypath/myfile?SASTOKEN: запросы с перекрестным происхождением поддерживаются только для схем протоколов: http, data, chrome, chrome-extension, https.


person John TheKingintheNorth Snow    schedule 04.10.2017    source источник


Ответы (1)


Ваш код C # выглядит нормально, и я не могу воспроизвести опубликованную вами ошибку. Возможно, вы можете использовать Azure Storage Explorer, чтобы сгенерировать токен SAS и увидеть что происходит.

введите описание изображения здесь

Обновить

Если ваш URL-адрес содержит специальный символ HTML, вам нужно будет закодировать их URL-адресом или просто скопировать URL-адрес SAS из Azure Storage Explorer, который был закодирован.

введите описание изображения здесь

person Aaron Chen    schedule 05.10.2017
comment
Тот же результат. Также, если я удалю строку запроса SAS, я вижу ту же ошибку. - person John TheKingintheNorth Snow; 05.10.2017
comment
Да, я очистил кеш. Я думаю, что что-то не так с моим URL для ViewerJs. URL должен выглядеть так: домен + ViewerJS /#../+ filePath. И эта ошибка возникает из-за того, что часть домена без токена SAS, только часть файла имеет токен SAS в моем URL-адресе - person John TheKingintheNorth Snow; 05.10.2017
comment
Если ваш URL включает #, вам нужно будет закодировать его как %23. - person Aaron Chen; 05.10.2017