cors(跨域资源共享)

跨域资源共享CORS(Cross-Origin Resource Sharing)简称跨域访问,是HTML5提供的标准跨域解决方案,允许Web应用服务器进行跨域访问控制,确保跨域数据传输的安全性。本文介绍如何通过cors命令添加、修改、查询、删除存储空间(Bucket)的CORS配置。

注意事项

  • 要添加或修改CORS配置,您需要具有oss:PutBucketCors权限;要获取CORS配置,您需要具有oss:GetBucketCors权限;要删除CORS配置,您需要具有oss:DeleteBucketCors权限。具体操作,请参见为RAM用户授权自定义的权限策略

  • 从ossutil 1.6.16版本开始,命令行中Binary名称支持直接使用ossutil,您无需根据系统刷新Binary名称。如果您的ossutil版本低于1.6.16,则需要根据系统刷新Binary名称。更多信息,请参见命令行工具ossutil命令参考

  • 关于跨域资源共享的更多信息,请参见跨域资源共享

添加或修改CORS配置

如果Bucket此前未添加过CORS配置,则使用该命令将为Bucket添加CORS配置。如果Bucket此前已添加CORS配置,则使用该命令将直接覆盖已有的CORS配置。

添加或修改CORS配置步骤如下:

  1. 创建本地文件,并在文件中添加CORS规则。

  2. ossutil先从本地文件中读取CORS配置,然后将读取到CORS配置添加到指定的Bucket。

添加或修改CORS配置的命令格式及示例如下:

  • 命令格式

    ossutil cors --method put oss://bucketname local_xml_file

    参数说明如下:

    参数

    说明

    bucketname

    待添加或修改CORS配置的Bucket名称。

    local_xml_file

    配置CORS规则的本地文件名称,例如localfile.txt

  • 使用示例

    1. 在本地创建名为localfile.txt文件,并根据使用场景配置CORS规则。

      如下示例表示在CORS规则中指定允许的跨域请求来源为www.aliyun.com、允许的跨域请求方法为PUT以及浏览器对特定资源的预取(OPTIONS)请求返回结果的缓存时间为10000秒。

      <?xml version="1.0" encoding="UTF-8"?>
         <CORSConfiguration>
           <CORSRule>
               <AllowedOrigin>www.aliyun.com</AllowedOrigin>
               <AllowedMethod>PUT</AllowedMethod>
               <MaxAgeSeconds>10000</MaxAgeSeconds>
           </CORSRule>
       </CORSConfiguration>
    2. 为examplebucket添加CORS规则。

      ossutil cors --method put oss://examplebucket localfile.txt

      以下输出结果表明已成功添加CORS规则。

      0.299514(s) elapsed

获取CORS配置

  • 命令格式

    ossutil cors --method get oss://bucketname [local_xml_file]

    参数说明如下:

    参数

    说明

    bucketname

    获取CORS配置的目标Bucket名称。

    local_xml_file

    用于存放CORS配置的本地文件名称,例如localfile.txt。如果未指定此参数,则CORS配置将直接输出到屏幕。

  • 使用示例

    获取目标存储空间examplebucket的CORS配置。

    ossutil cors --method get oss://examplebucket localfile.txt

    以下输出结果表明已成功获取CORS配置,并将其写入本地localfile.txt文件。

    0.212407(s) elapsed

删除CORS配置

  • 命令格式

    ossutil cors --method delete oss://bucketname
  • 使用示例

    删除examplebucket的CORS配置。

    ossutil cors --method delete oss://examplebucket

    以下输出结果表明已删除examplebucket的CORS配置。

    0.530750(s) elapsed

通用选项

当您需要通过命令行工具ossutil切换至另一个地域的Bucket时,可以通过-e选项指定该Bucket所属的Endpoint。当您需要通过命令行工具ossutil切换至另一个阿里云账号下的Bucket时,可以通过-i选项指定该账号的AccessKey ID,并通过-k选项指定该账号的AccessKey Secret。

例如您需要为另一个阿里云账号下,华东1(杭州)名为testbucket的Bucket添加CORS配置,命令如下:

ossutil cors --method put oss://testbucket localfile.txt -e oss-cn-hangzhou.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA****  -k 67DLVBkH7EamOjy2W5RVAHUY9H****

关于此命令的其他通用选项的更多信息,请参见通用选项