开发者社区 问答 正文

JavaScript-SDK之如何实现设置防盗链?

OSS是按使用收费的服务,为了防止用户在OSS上的数据被其他人盗链,OSS支持基于HTTP header中表头字段referer的防盗链方法。更多OSS防盗链请参考: OSS防盗链

设置Referer白名单


通过putBucketReferer设置Referer白名单: var co = require('co');
var OSS = require('ali-oss')
var client = new OSS({
  region: '<Your region>'
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>',
  bucket: '<Your bucket name>'
});
co(function* () {
  var result = yield client.putBucketReferer('bucket-name', 'region', true, [
    'my-domain.com',
    '*.example.com'
  ]);
  console.log(result);
}).catch(function (err) {
  console.log(err);
});



查看Referer白名单


通过getBucketReferer查看Referer白名单: var co = require('co');
var OSS = require('ali-oss')
var client = new OSS({
  region: '<Your region>'
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>',
  bucket: '<Your bucket name>'
});
co(function* () {
  var result = yield client.getBucketReferer('bucket-name', 'region');
  console.log(result);
}).catch(function (err) {
  console.log(err);
});



清空Referer白名单


通过deleteBucketReferer设置清空Referer白名单: var co = require('co');
var OSS = require('ali-oss')
var client = new OSS({
  region: '<Your region>'
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>',
  bucket: '<Your bucket name>'
});


  • co(function* () {
      var result = yield client.deleteBucketReferer('bucket-name', 'region');
      console.log(result);
    }).catch(function (err) {
      console.log(err);
    });


    展开
    收起
    青衫无名 2017-10-19 09:48:22 1748 分享 版权
    阿里云 AI 助理回答

    OSS会在以下访问操作时进行防盗链验证:

    1. 当请求访问OSS中存储的资源时,OSS会检查HTTP或HTTPS头部中的Referer字段。
    2. 如果防盗链功能开启,并且配置了白名单或黑名单,OSS会依据配置规则判断Referer字段的值。
    3. 请求中如果Referer字段的值与配置的白名单不符,或者属于黑名单中的地址,OSS将拒绝访问并返回错误,如403 Forbidden。
    4. 当设置了不允许空Referer,且请求中没有Referer字段或其值为空时,OSS也会阻止访问。

    综上,OSS在接收到任何带有或不带Referer字段的访问请求时,都会依据防盗链的配置规则进行验证,确保请求来源合法,防止未经授权的盗链行为导致的额外费用和资源滥用。

    有帮助
    无帮助
    AI 助理回答生成答案可能存在不准确,仅供参考
    0 条回答
    写回答
    取消 提交回答