使用 headObject 从 S3 文件中获取 x-amz-meta

Using headObject to get x-amz-meta from S3 File

例如,我在 S3 上有一个包含一些元数据的文件 x-amz-meta-description="some description" 当我将文件上传到 S3 时,此元数据已包含在内。 如果我使用 Amazon 控制台检查元数据,元数据就在那里。 接下来,我将以下内容添加到 CORS 配置中以访问 headers:

<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>

我正在尝试从我的网络应用程序检查文件的 headers。我正在使用以下 javascript 代码:

AWS.config.update({accessKeyId: 'XXX', secretAccessKey: 'YYY'})
var bucket = new AWS.S3({params: {Bucket: 'zzz'}});
var params = {Bucket: 'zzz',Key: 'content/myfile.doc'};
bucket.headObject(params, function (err, data) {
    if (err)
        console.log(err, err.stack);
    else
        console.log(data);
});

运行 之后代码 data.Metadata 为空。 是否有任何其他配置来获取与文件关联的元数据?我做错了什么?

感谢大家

PS:我用了getObject函数,但是Metadata还是空的

您需要像这样公开自定义 headers:

<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
    <ExposeHeader>x-amz-meta-description</ExposeHeader>
</CORSRule>

添加 ExposeHeader 帮助我解决了问题。

元数据仍然存在缺陷,link 中提供的修复无效:2017-05-07T03:34:17.319Z

允许 headers Made in CORS 修复了 headers 显示在 HTTP 请求中,但不显示在回调中。我最终自己散列了 object。