跨域资源共享(Cross-origin resource sharing,简称CORS)允许Web端的应用程序访问不属于本域的资源。OSS提供跨域资源共享接口,方便您控制跨域访问的权限。

说明 更多关于跨域资源共享的介绍,请参见开发指南中的设置跨域资源共享以及GitHub

设置跨域资源共享规则

以下代码用于为指定Bucket设置跨域资源共享规则:

let OSS = require('ali-oss');

let client = new OSS({
  // yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
  region: 'yourregion',
  // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
  accessKeyId: 'yourAccessKeyId',
  accessKeySecret: 'yourAccessKeySecret',
  // 填写待配置跨域资源共享规则的Bucket名称。
  bucket: 'yourBucket'
});

const rules = [{
        // 指定允许跨域请求的来源,支持通配符星号(*),表示允许所有的来源域。
        allowedOrigin: 'http://example.com',
        // 指定允许的跨域请求方法,支持GET、PUT、DELETE、POST和HEAD方法。
        allowedMethod: 'GET',
        // 指定允许跨域请求的响应头。建议无特殊情况下将此项设置为通配符星号(*)。
        allowedHeader: '*',
       // 指定允许用户从应用程序中访问的响应头,例如一个Javascript的XMLHttpRequest对象。不允许使用通配符星号(*)。
        exposeHeader: 'Content-Length',
       // 指定浏览器对特定资源的预取(OPTIONS)请求返回结果的缓存时间,单位为秒。
        maxAgeSeconds: '30'
      }];
      // 最多允许设置10条跨域资源共享规则。如果配置了相同的规则,则已存在的规则将被覆盖。
      const putResult = await store.putBucketCORS(bucket, rules);
            

有关设置跨域资源共享规则的更多信息,请参见PutBucketCors

获取跨域资源共享规则

以下代码用于获取指定Bucket的跨域资源共享规则:

let OSS = require('ali-oss');

let client = new OSS({
  // yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
  region: 'yourregion',
  // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
  accessKeyId: 'yourAccessKeyId',
  accessKeySecret: 'yourAccessKeySecret'
});

// 填写待获取跨域资源共享规则的Bucket名称。
const getResult = await store.getBucketCORS(bucket);
      assert.equal(getResult.res.status, 200);
      assert.deepEqual(getResult.rules, [{
        allowedOrigin: 'https://example.com',
        allowedMethod: 'GET',
        allowedHeader: '*',
        exposeHeader: 'Content-Length',
        maxAgeSeconds: '30'
      }]);

有关获取跨域资源共享规则的更多信息,请参见GetBucketCors

删除跨域资源共享规则

以下代码用于删除指定Bucket的所有跨域资源共享规则:

let OSS = require('ali-oss');

let client = new OSS({
  // yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
  region: 'yourregion',
  // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
  accessKeyId: 'yourAccessKeyId',
  accessKeySecret: 'yourAccessKeySecret'
});
// 填写待删除跨域资源共享规则的Bucket名称。
client.deleteBucketCORS('bucketName').then((res) => {
  console.log(res);
}).catch(e => {
  console.log(e)
})

有关删除跨域资源共享规则的更多信息,请参见DeleteBucketCors