云服务器内容精选

  • 代码示例 本示例用于删除名为examplebucket桶的CORS规则。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; public class DeleteBucketCors001 { public static void main(String[] args) { // 您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。 // 您可以登录访问管理控制台获取访问密钥AK/SK String ak = System.getenv("AC CES S_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。 // 您可以通过环境变量获取访问密钥AK/SK/SecurityToken,也可以使用其他外部引入方式传入。 // String securityToken = System.getenv("SECURITY_TOKEN"); // endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。 String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; // 您可以通过环境变量获取endPoint,也可以使用其他外部引入方式传入。 //String endPoint = System.getenv("ENDPOINT"); // 创建ObsClient实例 // 使用永久AK/SK初始化客户端 ObsClient obsClient = new ObsClient(ak, sk,endPoint); // 使用临时AK/SK和SecurityToken初始化客户端 // ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); try { // 删除跨域规则 obsClient.deleteBucketCors("examplebucket"); System.out.println("deleteBucketCors successfully"); } catch (ObsException e) { System.out.println("deleteBucketCors failed"); // 请求失败,打印http状态码 System.out.println("HTTP Code:" + e.getResponseCode()); // 请求失败,打印服务端错误码 System.out.println("Error Code:" + e.getErrorCode()); // 请求失败,打印详细错误信息 System.out.println("Error Message:" + e.getErrorMessage()); // 请求失败,打印请求id System.out.println("Request ID:" + e.getErrorRequestId()); System.out.println("Host ID:" + e.getErrorHostId()); e.printStackTrace(); } catch (Exception e) { System.out.println("deleteBucketCors failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 请求参数说明 表1 请求参数列表 参数名称 参数类型 是否必选 描述 request BaseBucketRequest 必选 参数解释: 删除跨域规则请求参数,详见BaseBucketRequest。 表2 BaseBucketRequest 参数名称 参数类型 是否必选 描述 bucketName String 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无
  • 接口约束 您必须是桶拥有者或拥有删除桶的CORS配置的权限,才能删除桶的CORS配置。建议使用 IAM 或桶策略进行授权,如果使用IAM则需授予obs:bucket:PutBucketCORS权限,如果使用桶策略则需授予PutBucketCORS权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。
  • 功能介绍 跨域资源共享(Cross Origin Resource Sharing,CORS)是由W3C标准化组织提出的一种网络浏览器的规范机制,定义了一个域中加载的客户端Web应用程序与另一个域中的资源交互的方式。而在通常的网页请求中,由于同源安全策略(Same Origin Policy,SOP)的存在,不同域之间的网站脚本和内容是无法进行交互的。OBS支持CORS规范,允许跨域请求访问OBS中的资源。 调用删除桶的CORS配置接口,您可删除指定桶的跨域资源共享规则。
  • 查看跨域规则 开发过程中,您有任何问题可以在github上提交issue,或者在华为云 对象存储服务 论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.getBucketCors查看桶的跨域规则。以下代码展示了如何查看跨域规则: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); BucketCors cors = obsClient.getBucketCors("bucketname"); for(BucketCorsRule rule : cors.getRules()){ Log.i("GetBucketCors","\t" + rule.getId()); Log.i("GetBucketCors","\t" + rule.getMaxAgeSecond()); Log.i("GetBucketCors","\t" + rule.getAllowedHeader()); Log.i("GetBucketCors","\t" + rule.getAllowedOrigin()); Log.i("GetBucketCors","\t" + rule.getAllowedMethod()); Log.i("GetBucketCors","\t" + rule.getExposeHeader()); } 父主题: 跨域资源共享
  • 参数描述 字段名 类型 约束 说明 option 请求桶的上下文,配置option 必选 桶参数。 obs_cors_conf_info obs_bucket_cors_conf * 必选 CORS规则具体内容,具体说明请参看下表。 conf_num unsigned int 必选 数组obs_cors_conf_info的数组成员个数。 handler obs_response_handler* 必选 回调函数。 callback_data void * 可选 回调数据。 CORS规则结构obs_bucket_cors_conf描述如下表: 字段名 类型 约束 说明 id const char * 可选 桶内对象名称。 allowed_method const char ** 必选 CORS规则允许的Method。 allowed_method_number unsigned int 必选 allowed_method的个数。 allowed_origin const char ** 必选 CORS规则允许的Origin(表示 域名 的字符串),可以带一个匹配符“*”。每一个allowedOrigin可以带最多一个“*”通配符。 allowed_origin_number unsigned int 必选 allowed_origin的个数。 allowed_header const char ** 可选 配置CORS请求中允许携带的“Access-Control-Request-Headers”头域。如果一个请求带了“Access-Control-Request-Headers”头域,则只有匹配上AllowedHeader中的配置才认为是一个合法的CORS请求。每一个allowed_header可以带最多一个“*”通配符,不可出现空格。 allowed_header_number unsigned int 可选 allowed_header的个数 max_age_seconds const char * 可选 客户端可以缓存的CORS响应时间,以秒为单位。每个CORS Rule可以包含至多一个max_age_seconds,可以设置为负值。 expose_header const char ** 可选 CORS响应中带的附加头域,给客户端提供额外的信息,不可出现空格。 expose_header_number unsigned int 可选 expose_header的个数。
  • 设置跨域规则 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.SetBucketCors设置桶的跨域规则,如果原规则存在则覆盖原规则。以下代码展示了如何设置跨域规则: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 设置桶跨域规则 try { SetBucketCorsRequest request = new SetBucketCorsRequest(); request.BucketName = "bucketname"; request.Configuration = new CorsConfiguration(); CorsRule rule = new CorsRule(); rule.Id = "20170820"; // 指定允许跨域请求的来源 rule.AllowedOrigins.Add("http://www.a.com"); rule.AllowedOrigins.Add("http://www.b.com"); // 控制在OPTIONS预取指令中Access-Control-Request-Headers头中指定的header是否被允许使用 rule.AllowedHeaders.Add("x-obs-header"); // 指定允许的跨域请求方法(GET/PUT/DELETE/POST/HEAD) rule.AllowedMethods.Add(HttpVerb.HEAD); rule.AllowedMethods.Add(HttpVerb.PUT); rule.AllowedMethods.Add(HttpVerb.GET); rule.AllowedMethods.Add(HttpVerb.POST); rule.AllowedMethods.Add(HttpVerb.DELETE); // 指定允许用户从应用程序中访问的header rule.ExposeHeaders.Add("x-obs-test1"); rule.ExposeHeaders.Add("x-obs-test2"); rule.MaxAgeSeconds = 100; request.Configuration.Rules.Add(rule); SetBucketCorsResponse response = client.SetBucketCors(request); Console.WriteLine("Set bucket cors response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } AllowedOrigins、AllowedMethods、AllowedHeaders都能够最多支持一个“*”通配符。“*”表示对于所有的域来源、操作或者头域都满足。 父主题: 跨域资源共享
  • 删除跨域规则 您可以通过deleteBucketCORS删除桶的跨域规则。以下代码展示了如何删除跨域规则: static OBSClient *client; NSString *endPoint = @"your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html char* ak_env = getenv("AccessKeyID"); char* sk_env = getenv("SecretAccessKey"); NSString *AK = [NSString stringWithUTF8String:ak_env]; NSString *SK = [NSString stringWithUTF8String:sk_env]; // 初始化身份验证 OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK]; //初始化服务配置 OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider]; // 初始化client client = [[OBSClient alloc] initWithConfiguration:conf]; // 删除桶的跨域资源配置 OBSDeleteBucketCORSRequest *request = [[OBSDeleteBucketCORSRequest alloc] initWithBucketName:@"bucketname"]; [client deleteBucketCORS:request completionHandler:^(OBSDeleteBucketCORSResponse *response, NSError *error) { NSLog(@"%@",response); }]; 父主题: 跨域资源共享
  • 跨域资源共享简介 跨域资源共享(CORS)是由W3C标准化组织提出的一种网络浏览器的规范机制,定义了一个域中加载的客户端Web应用程序与另一个域中的资源交互的方式。而在通常的网页请求中,由于同源安全策略(Same Origin Policy,SOP)的存在,不同域之间的网站脚本和内容是无法进行交互的。 OBS支持CORS规范,允许跨域请求访问OBS中的资源。 CORS的典型应用场景包括: 通过CORS支持,使用JavaScript和HTML5来构建Web应用,直接访问OBS中的资源,而不再需要代理服务器做中转。 使用HTML5中的拖拽功能,直接向OBS上传文件,展示上传进度,或是直接从Web应用中更新内容。 托管在不同域中的外部网页、样式表和HTML5应用,现在可以引用存储在OBS中的Web字体或图片,让这些资源能被多个网站共享。 CORS配置会在两分钟内生效。 父主题: 跨域资源共享