Azure 尝试在storage emulator上测试上载时接收CORS错误

Azure 尝试在storage emulator上测试上载时接收CORS错误,azure,ng-file-upload,azure-storage-emulator,Azure,Ng File Upload,Azure Storage Emulator,我正在尝试使用azure存储模拟器测试html5 angularjs应用程序的上传功能。出于某种原因,每次我将文件发送到azure为localhost生成的url时,都会收到CORS错误。现在在云实例上,我使用了以下代码添加CORS支持,它可以正常工作: blobServiceProperties.Cors.CorsRules.Add(new CorsRule() { AllowedHeaders = new List<string>() { "*" }, //Exp

我正在尝试使用azure存储模拟器测试html5 angularjs应用程序的上传功能。出于某种原因,每次我将文件发送到azure为localhost生成的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
});
blobServiceProperties.Cors.CorsRules.Add(新的CorsRule()
{
AllowedHeaders=new List(){“*”},
//ExposedHeaders=new List(){“*”},
AllowedMethods=CorsHttpMethods.Post | CorsHttpMethods.Put | CorsHttpMethods.Get | CorsHttpMethods.Delete,
AllowedOrigins=新列表(){”http://example.com" },
MaxAgeInSeconds=3600
});

当我尝试为emulator运行此命令时,我收到错误,指示这是不允许的。我是否也必须为仿真器设置CORS?如果是,由于上面的代码无法从仿真器运行,我将如何设置CORS?

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

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

除此之外

通过调用set-Blob服务属性、set-File服务属性、set-Queue服务属性和set-Table服务属性,可以分别为每个存储服务设置CORS规则。为服务设置CORS规则后,将对来自不同域的针对该服务的正确身份验证请求进行评估,以确定是否根据您指定的规则允许该请求

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

也要检查这两个链接


这段代码何时何地运行?WebApiConfig,我有两个独立的解决方案,一个用于web端,另一个用于web api项目。主要的问题是,我在模拟器上测试时一直在跟踪CORS错误。当我只在模拟器上发布web项目时,我不会在云中获取这些错误。