ali-sdk / ali-oss

Aliyun OSS(Object Storage Service) JavaScript SDK for the Browser and Node.js
https://www.alibabacloud.com/help/doc-detail/52834.htm
MIT License
1.94k stars 578 forks source link

不支持 x-oss-server-side-encryption header设置 #715

Closed chenquincy closed 4 years ago

chenquincy commented 4 years ago

使用 put 方法和 multipartUpload 方法上传文件至私密桶,添加 x-oss-server-side-encryption header 时报错:

InvalidArgumentError: x-oss-server-side-encryption header is not supported for this operation.

但是 文档 中显示是支持的 headers取值:

"headers": {
  "x-oss-server-side-encryption": "KMS"
}
Pedestrian93 commented 4 years ago

能贴下详细代码吗

chenquincy commented 4 years ago

@Pedestrian93
大概代码如下

const uploader = new AliOss({
    bucket,
    accessKeyId,
    accessKeySecret,
    stsToken,
    region,
    timeout: 100000000
})
uploader.put(objectKey, file, {
  headers: {
    "x-oss-server-side-encryption": "KMS"
  }
})
chenquincy commented 4 years ago

@Pedestrian93 initMultipartUpload 中有说明到 x-oss-server-side-encryption 配置,但是 multipartUpload 中却没有,在使用的时候通过 headers 传递同样会报错。

Pedestrian93 commented 4 years ago

简单 put 和 initMultipartUpload 应该是支持的

const result = await store.initMultipartUpload(name, {
        headers: {
          'x-oss-server-side-encryption': 'KMS'
        }
      });
chenquincy commented 4 years ago

@Pedestrian93 那么为什么 multipartUpload 不支持,这应该是个实现上的bug?我看了下源码,multipartUpload 实际上就是几个方法的组合使用,先 initMultipartUpload 再执行上传,特殊 headersinitMultipartUpload 后应该被过滤,后面的步骤不使用,但实际上没有

chenquincy commented 4 years ago

另外,我在 Node 端使用 put 方法也会报同样的错误,浏览器端没有尝试,但应该也会报错。

chenquincy commented 4 years ago

@Pedestrian93 能否告知这个问题大概什么时候能发版修复?

Pedestrian93 commented 4 years ago

明天可以发布

chenquincy commented 4 years ago

@Pedestrian93 我来催更了

PeterRao commented 4 years ago

@Pedestrian93 我来催更了

代码 还在review

chenquincy commented 4 years ago

@PeterRao 明天能发版吗

PeterRao commented 4 years ago

已经发布6.4.0