public static void SetBucketCors(string bucketName)
        {
            try
            {
                var request = new SetBucketCorsRequest(bucketName);
                var rule1 = new CORSRule();
                // Note: AllowedOrigin & AllowdMethod must not be empty.
                rule1.AddAllowedOrigin("http://www.a.com");
                rule1.AddAllowedMethod("POST");
                rule1.AddAllowedHeader("*");
                rule1.AddExposeHeader("x-oss-test");
                request.AddCORSRule(rule1);

                var rule2 = new CORSRule();
                rule2.AddAllowedOrigin("http://www.b.com");
                rule2.AddAllowedMethod("GET");
                rule2.AddExposeHeader("x-oss-test2");
                rule2.MaxAgeSeconds = 100;
                request.AddCORSRule(rule2);

                client.SetBucketCors(request);

                Console.WriteLine("Set bucket:{0} Cors succeeded ", bucketName);
            }
            catch (OssException ex)
            {
                Console.WriteLine("Failed with error info: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}", 
                    ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
        }
Пример #2
0
 public void EnableBucketCorsAddAndDeleteSingleRuleTest()
 {
     try
     {
         var sbcRequest = new SetBucketCorsRequest(_bucketName);
         sbcRequest.AddCORSRule(ConstructDummyCorsRule());
         _ossClient.SetBucketCors(sbcRequest);
         OssTestUtils.WaitForCacheExpire();
         var rules = OssTestUtils.ToArray <CORSRule>(_ossClient.GetBucketCors(_bucketName));
         Assert.AreEqual(1, rules.Count);
     }
     finally
     {
         _ossClient.DeleteBucketCors(_bucketName);
         OssTestUtils.WaitForCacheExpire();
         try
         {
             _ossClient.GetBucketCors(_bucketName);
             Assert.Fail("Get bucket cors should not pass when it was not set or deleted");
         }
         catch (OssException e)
         {
             Assert.AreEqual(OssErrorCode.NoSuchCORSConfiguration, e.ErrorCode);
         }
     }
 }
Пример #3
0
        public static void SetBucketCors(string bucketName)
        {
            try
            {
                var request = new SetBucketCorsRequest(bucketName);
                var rule1   = new CORSRule();
                // Note: AllowedOrigin & AllowdMethod must not be empty.
                rule1.AddAllowedOrigin("http://www.a.com");
                rule1.AddAllowedMethod("POST");
                rule1.AddAllowedHeader("*");
                rule1.AddExposeHeader("x-oss-test");
                request.AddCORSRule(rule1);

                var rule2 = new CORSRule();
                rule2.AddAllowedOrigin("http://www.b.com");
                rule2.AddAllowedMethod("GET");
                rule2.AddExposeHeader("x-oss-test2");
                rule2.MaxAgeSeconds = 100;
                request.AddCORSRule(rule2);

                client.SetBucketCors(request);

                Console.WriteLine("Set bucket:{0} Cors succeeded ", bucketName);
            }
            catch (OssException ex)
            {
                Console.WriteLine("Failed with error info: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
                                  ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
        }
Пример #4
0
        public Task <bool> SetBucketCorsRequestAsync(string bucketName, List <BucketCorsRule> rules)
        {
            if (string.IsNullOrEmpty(bucketName))
            {
                throw new ArgumentNullException(nameof(bucketName));
            }
            if (rules == null || rules.Count == 0)
            {
                throw new ArgumentNullException(nameof(rules));
            }
            var request = new SetBucketCorsRequest(bucketName);

            foreach (var item in rules)
            {
                var rule = new CORSRule();
                // 指定允许跨域请求的来源。
                rule.AddAllowedOrigin(item.Origin);
                // 指定允许的跨域请求方法(GET/PUT/DELETE/POST/HEAD)。
                rule.AddAllowedMethod(item.Method.ToString());
                // AllowedHeaders和ExposeHeaders不支持通配符。
                rule.AddAllowedHeader(item.AllowedHeader);
                // 指定允许用户从应用程序中访问的响应头。
                rule.AddExposeHeader(item.ExposeHeader);

                request.AddCORSRule(rule);
            }
            // 设置跨域资源共享规则。
            _client.SetBucketCors(request);
            return(Task.FromResult(true));
        }
        private SetBucketCorsCommand(IServiceClient client, Uri endpoint, ExecutionContext context,
                                    string bucketName, SetBucketCorsRequest setBucketCorsRequest)
            : base(client, endpoint, context)
        {
            OssUtils.CheckBucketName(bucketName);

            _bucketName = bucketName;
            _setBucketCorsRequest = setBucketCorsRequest;
        }
        private SetBucketCorsCommand(IServiceClient client, Uri endpoint, ExecutionContext context,
                                     string bucketName, SetBucketCorsRequest setBucketCorsRequest)
            : base(client, endpoint, context)
        {
            OssUtils.CheckBucketName(bucketName);

            _bucketName           = bucketName;
            _setBucketCorsRequest = setBucketCorsRequest;
        }
Пример #7
0
        public static void SetBucketCors()
        {
            const string accessKeyId     = "<your access key id>";
            const string accessKeySecret = "<your access key secret>";
            const string endpoint        = "<valid host name>";

            const string bucketName = "<bucket name>";

            OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret);

            try
            {
                var req = new SetBucketCorsRequest(bucketName);
                var r1  = new CORSRule();
                // Note: AllowedOrigin & AllowdMethod must not be empty.
                r1.AddAllowedOrigin("http://www.a.com");
                r1.AddAllowedMethod("POST");
                r1.AddAllowedHeader("*");
                r1.AddExposeHeader("x-oss-test");
                req.AddCORSRule(r1);

                var r2 = new CORSRule();
                r2.AddAllowedOrigin("http://www.b.com");
                r2.AddAllowedMethod("GET");
                r2.AddExposeHeader("x-oss-test2");
                r2.MaxAgeSeconds = 1000000000;
                req.AddCORSRule(r2);

                client.SetBucketCors(req);

                var rs = client.GetBucketCors(bucketName);
                foreach (var r in rs)
                {
                    // do something with CORSRule here...
                }
            }
            catch (OssException ex)
            {
                Console.WriteLine("Failed with error info: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
                                  ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
            finally
            {
                client.DeleteBucketCors(bucketName);
            }
        }
        public static void SetBucketCors()
        {
            const string accessKeyId = "<your access key id>";
            const string accessKeySecret = "<your access key secret>";
            const string endpoint = "<valid host name>";

            const string bucketName = "<bucket name>";

            OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret);

            try
            {
                var req = new SetBucketCorsRequest(bucketName);
                var r1 = new CORSRule();
                // Note: AllowedOrigin & AllowdMethod must not be empty.
                r1.AddAllowedOrigin("http://www.a.com");
                r1.AddAllowedMethod("POST");
                r1.AddAllowedHeader("*");
                r1.AddExposeHeader("x-oss-test");
                req.AddCORSRule(r1);

                var r2 = new CORSRule();
                r2.AddAllowedOrigin("http://www.b.com");
                r2.AddAllowedMethod("GET");
                r2.AddExposeHeader("x-oss-test2");
                r2.MaxAgeSeconds = 1000000000;
                req.AddCORSRule(r2);

                client.SetBucketCors(req);

                var rs = client.GetBucketCors(bucketName);
                foreach (var r in rs)
                {
                    // do something with CORSRule here...
                }
            }
            catch (OssException ex)
            {
                Console.WriteLine("Failed with error info: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
                    ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
            finally
            {
                client.DeleteBucketCors(bucketName);
            }
        }
Пример #9
0
        public void EnableBucketCorsEmptyTest()
        {
            var sbcRequest = new SetBucketCorsRequest(_bucketName);
            var newRole    = new CORSRule();

            try
            {
                sbcRequest.AddCORSRule(newRole);
                Assert.Fail("Add corsrule without any settings should not pass");
            }
            catch (ArgumentException)
            {
                Assert.IsTrue(true);
            }
        }
Пример #10
0
        public void SetBucketCors(string bucketName, string allowedOrigin, string allowedMethod, string allowedHeader, string exposeHeader)
        {
            var req = new SetBucketCorsRequest(bucketName);
            var r1  = new CORSRule();

            //指定允许跨域请求的来源
            r1.AddAllowedOrigin(allowedOrigin);
            //指定允许的跨域请求方法(GET/PUT/DELETE/POST/HEAD)
            r1.AddAllowedMethod(allowedMethod);
            //控制在OPTIONS预取指令中Access-Control-Request-Headers头中指定的header是否允许。
            r1.AddAllowedHeader(allowedHeader);
            //指定允许用户从应用程序中访问的响应头
            r1.AddExposeHeader(exposeHeader);
            req.AddCORSRule(r1);
            Client.SetBucketCors(req);
        }
Пример #11
0
 public void EnableBucketCorsAddAndDeleteMultipleRulesTest()
 {
     try
     {
         var sbcRequest = new SetBucketCorsRequest(_bucketName);
         sbcRequest.AddCORSRule(ConstructDummyCorsRule());
         sbcRequest.AddCORSRule(ConstructDummyCorsRuleWithMultiAllowedMethod());
         _ossClient.SetBucketCors(sbcRequest);
         OssTestUtils.WaitForCacheExpire();
         var rules = OssTestUtils.ToArray <CORSRule>(_ossClient.GetBucketCors(_bucketName));
         Assert.AreEqual(2, rules.Count);
     }
     finally
     {
         _ossClient.DeleteBucketCors(_bucketName);
     }
 }
Пример #12
0
 public void EnableBucketCorsAddInvalidSingleRuleTest()
 {
     try
     {
         var sbcRequest = new SetBucketCorsRequest(_bucketName);
         var rule       = new CORSRule();
         rule.AddAllowedOrigin("Original " + Guid.NewGuid());
         rule.AddAllowedMethod("GETGET");
         sbcRequest.AddCORSRule(rule);
         _ossClient.SetBucketCors(sbcRequest);
         Assert.Fail("Invalid Cors Rule should not be created successfully");
     }
     catch (ArgumentException)
     {
         Assert.IsTrue(true);
     }
     finally
     {
         _ossClient.DeleteBucketCors(_bucketName);
     }
 }
Пример #13
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);
        }
Пример #14
0
        private static void SetBucketCors()
        {
            try
            {
                CorsConfiguration corsConfig = new CorsConfiguration();

                CorsRule rule = new CorsRule();
                rule.Id = "20180520";
                rule.AllowedOrigins.Add("http://www.a.com");
                rule.AllowedOrigins.Add("http://www.b.com");
                rule.AllowedHeaders.Add("Authorization");
                rule.AllowedMethods.Add(HttpVerb.GET);
                rule.AllowedMethods.Add(HttpVerb.PUT);
                rule.AllowedMethods.Add(HttpVerb.POST);
                rule.AllowedMethods.Add(HttpVerb.DELETE);
                rule.AllowedMethods.Add(HttpVerb.HEAD);
                rule.ExposeHeaders.Add("x-obs-test1");
                rule.ExposeHeaders.Add("x-obs-test2");
                rule.MaxAgeSeconds = 100;

                corsConfig.Rules.Add(rule);

                SetBucketCorsRequest request = new SetBucketCorsRequest()
                {
                    BucketName    = bucketName,
                    Configuration = corsConfig,
                };

                SetBucketCorsResponse response = client.SetBucketCors(request);
                Console.WriteLine("SetBucketCors response: {0}", response.StatusCode);
            }
            catch (ObsException ex)
            {
                Console.WriteLine(string.Format("Exception errorcode: {0}, when set bucket cors.", ex.ErrorCode));
                Console.WriteLine("Exception errormessage: {0}", ex.ErrorMessage);
            }
        }
Пример #15
0
 /// <summary>
 /// 设置桶跨域资源共享配置,以允许客户端浏览器进行跨域请求。
 /// </summary>
 /// <param name="request">设置桶跨域资源共享配置的请求参数。</param>
 /// <returns>设置桶跨域资源共享配置的响应结果。</returns>
 public SetBucketCorsResponse SetBucketCors(SetBucketCorsRequest request)
 {
     return(this.DoRequest <SetBucketCorsRequest, SetBucketCorsResponse>(request));
 }
 /// <summary>
 /// Start the asynchronous request for configuring bucket CORS.
 /// </summary>
 /// <param name="request">Parameters in a request for configuring bucket CORS</param>
 /// <param name="callback">Asynchronous request callback function</param>
 /// <param name="state">Asynchronous request status object</param>
 /// <returns>Response to the asynchronous request</returns>
 public IAsyncResult BeginSetBucketCors(SetBucketCorsRequest request, AsyncCallback callback, object state)
 {
     return(this.BeginDoRequest <SetBucketCorsRequest>(request, callback, state));
 }
 public static SetBucketCorsCommand Create(IServiceClient client, Uri endpoint,
                                           ExecutionContext context,
                                           string bucketName, SetBucketCorsRequest setBucketCorsRequest)
 {
     return(new SetBucketCorsCommand(client, endpoint, context, bucketName, setBucketCorsRequest));
 }
Пример #18
0
        public void SetBucketCorsRequestInvalidArgumentTest()
        {
            try
            {
                var sbcRequest = new SetBucketCorsRequest(_bucketName);
                sbcRequest.AddCORSRule(null);
                Assert.Fail("Invalid argument should not be successful");
            }
            catch (Exception e)
            {
                Assert.IsTrue(e.Message.Contains("corsRule should not be null or empty"));
            }

            try
            {
                var sbcRequest = new SetBucketCorsRequest(_bucketName);
                var rule       = new CORSRule();
                rule.AddAllowedOrigin("Original " + Guid.NewGuid());
                rule.AddAllowedMethod("GET");
                for (var i = 0; i < 12; i++)
                {
                    sbcRequest.AddCORSRule(rule);
                }
                Assert.Fail("Invalid argument should not be successful");
            }
            catch (Exception e)
            {
                Assert.IsTrue(e.Message.Contains("One bucket not allow exceed ten item of CORSRules"));
            }

            try
            {
                var sbcRequest = new SetBucketCorsRequest(_bucketName);
                var rule       = new CORSRule();
                sbcRequest.AddCORSRule(rule);
                Assert.Fail("Invalid argument should not be successful");
            }
            catch (Exception e)
            {
                Assert.IsTrue(e.Message.Contains("corsRule.AllowedOrigins should not be empty"));
            }

            try
            {
                var sbcRequest = new SetBucketCorsRequest(_bucketName);
                var rule       = new CORSRule();
                rule.AddAllowedOrigin("Original " + Guid.NewGuid());
                sbcRequest.AddCORSRule(rule);
                Assert.Fail("Invalid argument should not be successful");
            }
            catch (Exception e)
            {
                Assert.IsTrue(e.Message.Contains("corsRule.AllowedMethods should not be empty"));
            }

            try
            {
                var sbcRequest = new SetBucketCorsRequest(_bucketName);
                sbcRequest.CORSRules = null;
                Assert.Fail("Invalid argument should not be successful");
            }
            catch (Exception e)
            {
                Assert.IsTrue(e.Message.Contains("CORSRule list should not be null"));
            }

            try
            {
                var corsRules = new List <CORSRule>();
                var rule      = new CORSRule();
                rule.AddAllowedOrigin("Original " + Guid.NewGuid());
                rule.AddAllowedMethod("GET");
                for (var i = 0; i < 9; i++)
                {
                    corsRules.Add(rule);
                }
                var sbcRequest = new SetBucketCorsRequest(_bucketName);
                sbcRequest.CORSRules = corsRules;
                Assert.IsTrue(true);

                corsRules.Add(rule);
                corsRules.Add(rule);
                sbcRequest.CORSRules = corsRules;
                Assert.Fail("Invalid argument should not be successful");
            }
            catch (Exception e)
            {
                Assert.IsTrue(e.Message.Contains(" bucket not allow exceed ten item of CORSRules"));
            }
        }
 public static SetBucketCorsCommand Create(IServiceClient client, Uri endpoint,
                                          ExecutionContext context,
                                          string bucketName, SetBucketCorsRequest setBucketCorsRequest)
 {
     return new SetBucketCorsCommand(client, endpoint, context, bucketName, setBucketCorsRequest);
 }