如何让 Azure 在请求文件时在响应中返回'Accept-Ranges'和'Content-Encoding'标头?



我正在使用Azure blob存储,当我对文件执行GET请求时,我希望响应包含"Accept Ranges"one_answers"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;
}

但标题也不存在。我发现了这篇博客文章,建议将我的azure blob服务器的DefaultServiceVersion更改为"2012-02-12"。我已经做到了,但仍然没有看到所需的头球。

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

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

在Windows中,Azure Management Studio使通过GUI 管理CORS问题变得非常容易

最新更新