如何让Azure返回' Accept-Ranges'和'内容编码'请求文件时响应中的标头?

时间:2014-11-12 15:49:25

标签: azure http-headers blob

我正在使用Azure blob存储,当我对文件执行GET请求时,我希望响应包含“Accept-Ranges”和“Content-Encoding”的标头。

我已经针对我的blob服务器运行了以下代码,首先允许这些:

var url = new Uri(String.Format("https://yourblob.blob.core.windows.net"));
var credentials = new StorageCredentials("accountname", "key");
var client = new CloudBlobClient(url, credentials);

var corsRule = new CorsRule();

corsRule.ExposedHeaders.Add("Accept-Ranges");
corsRule.ExposedHeaders.Add("Content-Encoding");
corsRule.ExposedHeaders.Add("Content-Length");
corsRule.ExposedHeaders.Add("Content-Type");

corsRule.AllowedHeaders.Add("Accept-Ranges");
corsRule.AllowedHeaders.Add("Content-Encoding");
corsRule.AllowedHeaders.Add("Content-Length");
corsRule.AllowedHeaders.Add("Content-Type");

var serviceProperties = CloudBlobClient.GetServiceProperties();
serviceProperties.Cors.CorsRules.Clear();
serviceProperties.Cors.CorsRules.Add(corsRule);
client.SetServiceProperties(serviceProperties);

这似乎有效,因为之前我在返回的对象上运行以下Javascript时收到错误Refused to get unsafe header "Accept-Ranges",我不再收到此错误:

var fullRequestXhr = networkManager.getRequestXhr(fullRequestXhrId);
if (fullRequestXhr.getResponseHeader('Accept-Ranges') !== 'bytes') {
    return;
}

但标题也不存在。我发现this blog post建议将我的azure blob服务器的 DefaultServiceVersion 更改为“2012-02-12”。我已经这样做了,但仍然没有看到所需的标题。

我需要这些用于我正在使用的库(pdf.js),如果存在这些库,则允许以块的形式加载pdf文件。也许在上传之前我需要对文件做些什么?

任何帮助都将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

在Windows中,Azure Management Studio使通过GUI

管理CORS问题变得非常容易