[Jquery] ¿Cómo puedo configurar CORS en Azure BLOB Storage en Portal?


Answers

Esto es posible hacerlo ahora directamente en el portal, afortunadamente. Si solo selecciona la cuenta, verá el menú con varias opciones y CORS será uno de ellos para cada uno de los servicios Blob, Archivo, etc.

Question

Tenemos un almacenamiento blob en Windows Azure.

http://mytest.blob.core.windows.net/forms

Cargué algunos archivos en el almacenamiento usando CloudBerry. Y puedo descargar los archivos de navegadores con éxito. Estos archivos son simples archivos de texto, pero con diferentes extensiones de archivo. Por ejemplo,

http://mytest.blob.core.windows.net/forms/f001.etx

Quiero descargar los archivos a través de jquery ($ .get), sin embargo, falló debido a CORS.

¿Cómo puedo configurar CORS en Azure BLOB Storage en Portal?

Y, ¿debería hacer algo por CORS en el lado del cliente también?




El almacenamiento en Azure Blob admite CORS, pero debe establecer los encabezados antes de realizar la solicitud. Para hacer esto, sería mejor usar $.ajax ya que le da más control sobre la información que se envía. Aquí hay un ejemplo re-trabajado de esta demostración :

function setHeader(xhr) {
    xhr.setRequestHeader('x-ms-version', '2013-08-15');
    xhr.setRequestHeader('MaxDataServiceVersion', '3.0');
    xhr.setRequestHeader('Accept', 'application/json;odata=nometadata');
}

$.ajax({
    type: 'GET',
    datatype: "json",
    url: 'http://mytest.blob.core.windows.net/forms/f001.etx',
    beforeSend: setHeader,
    success: function(data) {
        // do something with the retrieved file.
    },
    error: function (res, status, xhr) {
        alert("can't get the data for the specified table");
    }
});



Una forma más concisa de configurar CORS a través de PowerShell: https://gist.github.com/irwinwilliams/4cf93b6e2461c753ff125590650186ae

#works with Azure in Powershell v 1.3.2
clear 
$StorageAccountName = "[storageaccountname]"
$Key = "[storageaccountkey]"
$Context = New-AzureStorageContext -StorageAccountKey $Key -StorageAccountName $StorageAccountName
$CorsRules = (@{
    AllowedHeaders=@("*");
    AllowedOrigins=@("*");
    ExposedHeaders=@("content-length");
    MaxAgeInSeconds=200;
    AllowedMethods=@("Get","Connect", "Head")})
Set-AzureStorageCORSRule -ServiceType Blob -CorsRules $CorsRules -Context $Context
$CORSrule = Get-AzureStorageCORSRule -ServiceType Blob -Context $Context
echo "Current CORS rules: "
echo $CORSrule



Links