public void CreatesCorrectPolicy(string header1, string header2) { var basePolicy = new AllowedHeaders(new [] { header1, header2 }); var xml = basePolicy.GetXml().ToString(); xml.Should().Be( @$ "<allowed-headers> <header>{header1}</header>
/// <summary> /// Returns CORS-specific headers that should be added to the response. /// </summary> /// <returns>The response headers.</returns> public virtual IDictionary <string, string> ToResponseHeaders() { IDictionary <string, string> headers = new Dictionary <string, string>(); if (AllowedOrigin != null) { headers.Add(CorsConstants.AccessControlAllowOrigin, AllowedOrigin); } if (SupportsCredentials) { headers.Add(CorsConstants.AccessControlAllowCredentials, "true"); } if (AllowedMethods.Count > 0) { // Filter out simple methods IEnumerable <string> nonSimpleAllowMethods = AllowedMethods.Where(m => !CorsConstants.SimpleMethods.Contains(m, StringComparer.OrdinalIgnoreCase)); AddHeader(headers, CorsConstants.AccessControlAllowMethods, nonSimpleAllowMethods); } if (AllowedHeaders.Count > 0) { // Filter out simple request headers IEnumerable <string> nonSimpleAllowRequestHeaders = AllowedHeaders.Where(header => !CorsConstants.SimpleRequestHeaders.Contains(header, StringComparer.OrdinalIgnoreCase)); AddHeader(headers, CorsConstants.AccessControlAllowHeaders, nonSimpleAllowRequestHeaders); } if (AllowedExposedHeaders.Count > 0) { // Filter out simple response headers IEnumerable <string> nonSimpleAllowResponseHeaders = AllowedExposedHeaders.Where(header => !CorsConstants.SimpleResponseHeaders.Contains(header, StringComparer.OrdinalIgnoreCase)); AddHeader(headers, CorsConstants.AccessControlExposeHeaders, nonSimpleAllowResponseHeaders); } if (PreflightMaxAge.HasValue) { headers.Add(CorsConstants.AccessControlMaxAge, PreflightMaxAge.ToString()); } return(headers); }
/// <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 IExposeHeadersPolicyBuilder Headers(params string[] headers) { _allowedHeaders = new AllowedHeaders(headers); return(this); }
public IExposeHeadersPolicyBuilder AllHeaders() { _allowedHeaders = new AllowedHeaders(); return(this); }
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); }