/// <summary> /// 跨域规则 /// </summary> public SetBucketCorsRequest ToCORSRules() { var request = new SetBucketCorsRequest(Name); var rule = new CORSRule(); rule.MaxAgeSeconds = MaxAgeSeconds; if (AllowedOrigins != null && AllowedOrigins.Length > 0) { AllowedOrigins.ToList().ForEach(x => rule.AddAllowedOrigin(x)); } else { throw new Abp.UI.UserFriendlyException("AllowedOrigins 不能是空"); } if (AllowedHeaders != null && AllowedHeaders.Length > 0) { AllowedHeaders.ToList().ForEach(x => rule.AddAllowedHeader(x)); } if (AllowedMethods != null && AllowedMethods.Length > 0) { AllowedMethods.ToList().ForEach(x => rule.AddAllowedMethod(x)); } else { throw new Abp.UI.UserFriendlyException("AllowedMethod 不能是空"); } if (ExposedHeaders != null && ExposedHeaders.Length > 0) { if (ExposedHeaders.Contains("*")) { throw new Abp.UI.UserFriendlyException("ExposedHeaders 不能使用*通配符"); } ExposedHeaders.ToList().ForEach(x => rule.AddExposeHeader(x)); } request.AddCORSRule(rule); return(request); }
public async Task EnableCORSAsync() { CorsHttpMethods allowedMethods = CorsHttpMethods.None; allowedMethods |= CorsHttpMethods.Get; allowedMethods |= CorsHttpMethods.Put; allowedMethods |= CorsHttpMethods.Post; allowedMethods |= CorsHttpMethods.Delete; allowedMethods |= CorsHttpMethods.Options; var delimiter = new[] { "," }; var corsRule = new CorsRule(); const string AllowedOrigins = "*"; const string AllowedHeaders = "*"; const string ExposedHeaders = ""; var allAllowedOrigin = AllowedOrigins.Split(delimiter, StringSplitOptions.RemoveEmptyEntries); var allExpHeaders = ExposedHeaders.Split(delimiter, StringSplitOptions.RemoveEmptyEntries); var allAllowHeaders = AllowedHeaders.Split(delimiter, StringSplitOptions.RemoveEmptyEntries); var corsAllowedOrigin = new List <string>(); foreach (var item in allAllowedOrigin) { if (!string.IsNullOrWhiteSpace(item)) { corsAllowedOrigin.Add(item.Trim()); } } var corsExposedHeaders = new List <string>(); foreach (var item in allExpHeaders) { if (!string.IsNullOrWhiteSpace(item)) { corsExposedHeaders.Add(item.Trim()); } } var corsAllowHeaders = new List <string>(); foreach (var item in allAllowHeaders) { if (!string.IsNullOrWhiteSpace(item)) { corsAllowHeaders.Add(item.Trim()); } } corsRule.MaxAgeInSeconds = 200; corsRule.AllowedMethods = allowedMethods; corsRule.AllowedHeaders = corsAllowHeaders; corsRule.AllowedOrigins = corsAllowedOrigin; corsRule.ExposedHeaders = corsExposedHeaders; var serviceProperties = await this.blobClient.GetServicePropertiesAsync(); serviceProperties.Cors.CorsRules.Clear(); serviceProperties.Cors.CorsRules.Add(corsRule); await this.blobClient.SetServicePropertiesAsync(serviceProperties); }