我正在使用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文件。也许在上传之前我需要对文件做些什么?
任何帮助都将不胜感激,谢谢。