创建BlobServiceWithSas时未提供'Access-Control-Allow-Origin'标头。
创建BlobServiceWithSas时未提供'Access-Control-Allow-Origin'标头。
这是我第一次使用Azure Storage JS API。我按照这个Microsoft教程的指示进行操作。\n我在节点服务器上成功生成了SAS密钥,但仍然遇到了身份验证失败的错误。我正在使用Microsoft Azure提供的库。请问我该如何解决这个问题?\n
function test() { Restangular.all('cdn/sas').post({container: 'photos'}).then(function (sas) { var blobUri = 'https://hamsar.blob.core.windows.net'; var blobService = AzureStorage.createBlobServiceWithSas(blobUri, sas.token); blobService.listContainersSegmented(null, function (error, results) { if (error) { // 处理容器列表错误 } else { // 处理容器对象 } }); }, function (error) { console.log("生成SAS时出错:", error); }); }
\n错误信息:\n\n\n
根据错误信息,我发现您创建了一个服务SAS令牌。但是如果您想列出存储账户中的所有容器名称,您需要使用账户SAS令牌。
请注意,您也可以使用blobService.listBlobsSegmented方法,但是您需要确保您的服务SAS令牌具有列出blob文件和设置容器名称的权限。
代码如下:
blobService.listBlobsSegmented('mycontainer', null, function (error, results)
如果您想列出所有容器,我建议您按照这些代码生成账户SAS令牌。
代码如下:
var getPolicyWithFullPermissions = function(){ var startDate = new Date(); var expiryDate = new Date(); startDate.setTime(startDate.getTime() - 1000); expiryDate.setTime(expiryDate.getTime() + 24*60*60*1000); var sharedAccessPolicy = { AccessPolicy: { Services: AccountSasConstants.Services.BLOB + AccountSasConstants.Services.FILE + AccountSasConstants.Services.QUEUE + AccountSasConstants.Services.TABLE, ResourceTypes: AccountSasConstants.Resources.SERVICE + AccountSasConstants.Resources.CONTAINER + AccountSasConstants.Resources.OBJECT, Permissions: AccountSasConstants.Permissions.READ + AccountSasConstants.Permissions.ADD + AccountSasConstants.Permissions.CREATE + AccountSasConstants.Permissions.UPDATE + AccountSasConstants.Permissions.PROCESS + AccountSasConstants.Permissions.WRITE + AccountSasConstants.Permissions.DELETE + AccountSasConstants.Permissions.LIST, Protocols: AccountSasConstants.Protocols.HTTPSORHTTP, Start: startDate, Expiry: expiryDate } }; return sharedAccessPolicy; }; var sharedAccessSignature = azure.generateAccountSharedAccessSignature(environmentAzureStorageAccount, environmentAzureStorageAccessKey, getPolicyWithFullPermissions );
然后,您可以使用账户SAS令牌来列出账户的容器。
结果如下:
关于服务SAS和账户SAS之间的区别的更多细节,您可以参考这篇文章。