开发者社区> 问答> 正文

web端通过sts方式上传文件到oss

问题:web端js用sts方式上传文件时报403错误

web端js代码:

/*附件上传*/
      var checkpoint_temp;

      function multipartUploadWithSts(storeAs, file, cpt) {
        OSS.urllib.request("http://member.xymdev.com:2700/ways/merchant/ui/order/get/oss/sts/evidence", {method: 'POST'}, function (err, response) {
          var result, errmsg;
          if (err) {
            return alert(err);
          }
          try {
            result = JSON.parse(response);
          } catch (e) {
            errmsg = 'parse sts response info error: ' + e.message;
            return alert(errmsg);
          }
          console.log(result)
          var client = new OSS.Wrapper({
            accessKeyId: result.data.accessKeyId,
            accessKeySecret: result.data.accessKeySecret,
            stsToken: result.data.securityToken,
            bucket: 'pri-bucket',
            endpoint: 'http://oss-cn-shanghai.aliyuncs.com'

          });
          multitest(client, storeAs, file, cpt);
        })
      };

      var upload = function () {
        var client = null;
        var file = document.getElementById('uploadFile').files[0];
        console.log(file);
        var storeAs = file['name'];
        console.log("upload file=",file)
        multipartUploadWithSts(storeAs, file)
      };

      function multitest (ossClient, storeAs, file, cpt) {
        //console.log(file.name + ' => ' + storeAs);
        var checkpoint_temp;
        if (cpt) {
          console.log("multitest with cpt")
          ossClient.multipartUpload(storeAs, file,{
            parallel: 2,
            checkpoint: cpt,
            progress: function* (percent, cpt) {
              console.log('Progress: ' + percent);
              checkpoint_temp = cpt
            }
          }).then(function (result) {
            console.log(result);
          }).catch(function (err) {
            console.log(err);
            multipartUploadWithSts(storeAs, file, checkpoint_temp)
          });
        } else {
          console.log("multitest without cpt")
          ossClient.multipartUpload(storeAs, file,{
            parallel: 2,
            progress: function* (percent, cpt) {
              console.log('Progress: ' + percent);
              checkpoint_temp = cpt
            }
          }).then(function (result) {
            console.log(result);
          }).catch(function (err) {
            console.log(err);
            multipartUploadWithSts(storeAs, file, checkpoint_temp)

          });
        }


      };
      document.getElementById('uploadFile').onchange = upload;

错误信息:
Failed to load http://xym-ways-dev-private.oss-cn-hangzhou.aliyuncs.com/Jung-Ki-Song.jpg: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://member.xymdev.com:2700' is therefore not allowed access. The response had HTTP status code 403. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

后端返回sts凭证:







展开
收起
287548936748087164 2018-09-12 19:36:37 3549 0
1 条回答
写回答
取消 提交回答
  • 互联网小站长、java程序员、运营爱好者,关心开源与喜欢的一切,喜欢总结写攻略,对产品设计有点兴趣......
    你好,可以参考如下文档解决,望采纳。

    OSS错误响应_常见错误排除_对象存储 OSS-阿里云
     https://help.aliyun.com/document_detail/32005.html?spm=5176.10695662.1996646101.searchclickresult.5dd23976Jbaq8s
    2018-09-12 19:50:24
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Web应用系统性能优化 立即下载
高性能Web架构之缓存体系 立即下载
PWA:移动Web的现在与未来 立即下载