发布日期:2024-11-01 20:13 点击次数:162
因浏览器的同源战略截止丁香色五月,在不同域名之间进行数据交互粗略资源分享时,会出现跨域恳求被休止的问题。您不错通过修复允许特定的域名、轨范和恳求头的跨域走访战略,措置跨域问题。
堤防事项本文以华东1(杭州)外网Endpoint为例。若是您但愿通过与OSS同地域的其他阿里云居品走访OSS,请使用内网Endpoint。对于OSS接济的Region与Endpoint的对应干系,请参见走访域名和数据中心。
本文以OSS域名新建OSSClient为例。若是您但愿通过自界说域名、STS等花式新建OSSClient,请参见驱动化。
要修复跨域法例,您必须有oss:PutBucketCors权限;要赢得跨域法例,您必须有oss:GetBucketCors权限;要删除跨域法例,您必须有oss:DeleteBucketCors权限。具体操作,请参见为RAM用户授权自界说的权限战略。
李蓉蓉 麻豆修复跨域资源分享法例以下代码用于修复指定存储空间的跨域法例:
using Aliyun.OSS; using Aliyun.OSS.Common; // yourEndpoint填写Bucket场地地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。 var endpoint = "https://oss-cn-hangzhou.aliyuncs.com"; // 从环境变量中赢得走访把柄。运行本代码示例之前,请确保已修复环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。 var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID"); var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET"); // 填写Bucket称号,国产三级举例examplebucket。 var bucketName = "examplebucket"; // 创建OSSClient实例。 var client = new OssClient(endpoint, accessKeyId, accessKeySecret); try { var request = new SetBucketCorsRequest(bucketName); var rule1 = new CORSRule(); // 指定允许跨域恳求的着手。 rule1.AddAllowedOrigin(""); // 指定允许的跨域恳求轨范(GET/PUT/DELETE/POST/HEAD)。 rule1.AddAllowedMethod("POST"); // AllowedHeaders和ExposeHeaders不接济通配符。 rule1.AddAllowedHeader("*"); // 指定允许用户从利用要领中走访的反应头。 rule1.AddExposeHeader("x-oss-test"); // 最多允许10条法例。 request.AddCORSRule(rule1); var rule2 = new CORSRule(); // AllowedOrigins和AllowedMethods最多接济一个星号(*)通配符。星号(*)暗意允许通盘的域着手粗略操作。 rule2.AddAllowedOrigin(""); rule2.AddAllowedMethod("GET"); // 是否允许预取提示(OPTIONS)中Access-Control-Request-Headers头中指定的Header。 rule2.AddExposeHeader("x-oss-test2"); // 指定浏览器对特定资源的预取(OPTIONS)恳求复返成果的缓存时间,单元为秒。 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); }赢得跨域资源分享法例
赢得跨域资源分享法例完满代码请参见GitHub。
以下代码用于赢得跨域法例:
using Aliyun.OSS; using Aliyun.OSS.Common; // yourEndpoint填写Bucket场地地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。 var endpoint = "https://oss-cn-hangzhou.aliyuncs.com"; // 从环境变量中赢得走访把柄。运行本代码示例之前,请确保已修复环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。 var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID"); var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET"); // 填写Bucket称号,举例examplebucket。 var bucketName = "examplebucket"; // 创建OSSClient实例。 var client = new OssClient(endpoint, accessKeyId, accessKeySecret); try { // 赢得跨域资源分享法例。 var result = client.GetBucketCors(bucketName); Console.WriteLine("Get bucket:{0} Cors succeeded ", bucketName); foreach (var rule in result) { foreach (var origin in rule.AllowedOrigins) { Console.WriteLine("Allowed origin:{0}", origin); } } } 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); }删除跨域资源分享法例
以下代码用于删除指定存储空间的通盘跨域法例:
using Aliyun.OSS; using Aliyun.OSS.Common; // yourEndpoint填写Bucket场地地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。 var endpoint = "https://oss-cn-hangzhou.aliyuncs.com"; // 从环境变量中赢得走访把柄。运行本代码示例之前,请确保已修复环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。 var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID"); var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET"); // 填写Bucket称号,举例examplebucket。 var bucketName = "examplebucket"; // 创建OSSClient实例。 var client = new OssClient(endpoint, accessKeyId, accessKeySecret); try { // 删除跨域资源分享法例。 client.DeleteBucketCors(bucketName); Console.WriteLine("Delete 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); }有关文档
对于跨域资源分享的完满示例代码,GitHub示例。
对于修复跨域法例的API接口诠释,请参见PutBucketCors。
对于赢得跨域法例的API接口诠释,请参见GetBucketCors。
对于删除跨域法例的API接口诠释丁香色五月,请参见DeleteBucketCors。