首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FineUploader Azure的CORS配置问题

FineUploader Azure的CORS配置问题
EN

Stack Overflow用户
提问于 2017-05-29 21:26:26
回答 1查看 421关注 0票数 0

我使用React版本的FineUploader将文件上传到Azure blob存储区,上传程序给了我以下错误:

请求的资源上没有“访问-控制-允许-原产地”标题。

我用下面的代码设置后端以设置CORS设置。此代码是FineUploader中的代码示例的一个稍微修改过的版本:https://github.com/FineUploader/server-examples/blob/master/C%23/azure/FineUploaderAzureServer.cs

代码语言:javascript
复制
public async Task ConfigureCors()
{
   var ALLOWED_CORS_ORIGINS = new List<String> { "http://myapp.com", "http://localhost:3333"};
   var ALLOWED_CORS_HEADERS = new List<String> { "x-ms-meta-qqfilename", "Content-Type", "x-ms-blob-type", "x-ms-blob-content-type" };
   const CorsHttpMethods ALLOWED_CORS_METHODS = CorsHttpMethods.Delete | CorsHttpMethods.Put | CorsHttpMethods.Options;
   const int ALLOWED_CORS_AGE_DAYS = 5;

   var properties = await _client.GetServicePropertiesAsync();

   properties.DefaultServiceVersion = "2013-08-15";
   await _client.SetServicePropertiesAsync(properties);

   var addRule = true;
   if (addRule)
   {
      var ruleWideOpenWriter = new CorsRule()
      {
         AllowedHeaders = ALLOWED_CORS_HEADERS,
         AllowedOrigins = ALLOWED_CORS_ORIGINS,
         AllowedMethods = ALLOWED_CORS_METHODS,
         MaxAgeInSeconds = (int)TimeSpan.FromDays(ALLOWED_CORS_AGE_DAYS).TotalSeconds
      };
   properties.Cors.CorsRules.Clear();
   properties.Cors.CorsRules.Add(ruleWideOpenWriter);
   await _client.SetServicePropertiesAsync(properties);
   }
}

以上代码运行良好。当我登录到Azure门户时,我会在我的存储帐户的CORS选项卡下看到这些设置。

当我在研究的时候,我注意到有人建议这个问题可能是因为本地主机的请求。我把这个应用程序移到Azure网站来测试它,但我仍然收到同样的错误。我在CORS设置中包含了这个测试站点的新URL。

下面是我良好的上传器包装初始化:

代码语言:javascript
复制
const uploader = new FineUploaderAzure({
    options: {
      cors: {
          expected: true,
          sendCredentials: true
      },
      signature: {
        endpoint: 'http://localhost:49065/getsas'
      },
      request: {
          endpoint: 'https://myaccount.blob.core.windows.net/test-container'
      },
      uploadSuccess: {
        endpoint: 'http://localhost:49065/success'
      }
    }
})

知道是什么导致了这个问题吗?

更新:下面是我在Azure门户上看到的CORS设置的屏幕截图:

下面是指定选项的代码:

以下是来自Chrome的请求头的屏幕截图:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-30 03:46:47

问题在于您的SAS端点(https://ingridapp.azurewebsites.net),而不是Azure。您还没有设置SAS端点来处理CORS/跨源请求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44250482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档