Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        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);
        }