5

我正在尝试使用 azure 存储模拟器测试 html5、angularjs 应用程序的上传功能。出于某种原因,每次我将文件发送到 localhost 的 azure 生成的 url 时,我都会收到 CORS 错误。现在在云实例上,我使用以下代码添加了 CORS 支持并且它可以工作:

blobServiceProperties.Cors.CorsRules.Add(new CorsRule()
{
    AllowedHeaders = new List<string>() { "*" },
    //ExposedHeaders = new List<string>() {"*"},
    AllowedMethods = CorsHttpMethods.Post | CorsHttpMethods.Put | CorsHttpMethods.Get | CorsHttpMethods.Delete,
    AllowedOrigins = new List<string>() { "http://example.com" },
    MaxAgeInSeconds = 3600
});

当我尝试为模拟器运行它时,我收到错误,表明这是不允许的。我是否也必须为模拟器设置 CORS,如果是这样,我将如何执行此操作,因为上面的代码在模拟器中不起作用?

4

1 回答 1

0

根据 MSDN 文档,我想澄清一件事

“Azure 存储服务支持 Blob、表和队列服务的跨域资源共享 (CORS)。文件服务从版本 2015-02-21 开始支持 CORS。”

更进一步

通过调用设置 Blob 服务属性、设置文件服务属性、设置队列服务属性和设置表服务属性,您可以为每个存储服务单独设置 CORS 规则。为服务设置 CORS 规则后,将对来自不同域的服务发出的经过适当身份验证的请求进行评估,以确定是否根据您指定的规则允许该请求。

所以我很好奇该服务是文件服务还是只是一个 blob 服务,您似乎已经根据提供的代码片段为 blob 服务启用了 CORS。但是您没有放置上传功能的代码片段,如果您是通过 AJAX 进行的,则需要将标头类型设置为 Azure 服务的 blob 类型,否则跨源请求可能会在请求者端本身被阻止,如果它不能与服务响应头类型匹配。

也要检查这两个链接

Windows Azure 服务 CORS 示例

Azure 存储服务的 CORS

于 2015-12-30T23:12:36.227 回答