AWS Javascript SDK CORS错误
我在浏览器中使用AWS SDK for JavaScript,使用S3。在下面的代码中,第一个调用getSignedUrl工作正常,但对getObject的第二个调用失败,出现CORS错误-访问控制Allow origin不允许使用origin 有人知道我犯了什么明显的、简单的、愚蠢的错误吗AWS Javascript SDK CORS错误,javascript,amazon-web-services,amazon-s3,cors,Javascript,Amazon Web Services,Amazon S3,Cors,我在浏览器中使用AWS SDK for JavaScript,使用S3。在下面的代码中,第一个调用getSignedUrl工作正常,但对getObject的第二个调用失败,出现CORS错误-访问控制Allow origin不允许使用origin 有人知道我犯了什么明显的、简单的、愚蠢的错误吗 AWS.config.update({accessKeyId: 'AAAAAAAAAAAA', secretAccessKey: 'ZZZZZZZZZ'}); var s3 = new AWS.S3();
AWS.config.update({accessKeyId: 'AAAAAAAAAAAA', secretAccessKey: 'ZZZZZZZZZ'});
var s3 = new AWS.S3();
var params = {Bucket: 'myBucket', Key: 'path/to/this/file.json'};
//this works...
var url = s3.getSignedUrl('getObject', params);
console.log(url);
//this doesn't...
var obj = s3.getObject(params, function (error, data) {
if (error) {
console.log(error); // an error occurred
} else {
console.log(data); // request succeeded
}
});
这可能是您的浏览器说,由于,它无法向S3发出请求 你可以试着解决这个问题
getSignedUrl调用工作正常,因为SDK完全“离线”完成了该操作(S3API中没有此类调用)。我发现问题来自S3 CORS设置,该设置默认为allowedheaders=Authorized。用*替换它成功了。这是由S3抱怨没有收到授权请求引起的 这似乎是一个身份验证问题。当我将bucket CORS策略设置为*时,它可以工作,但经过授权后失败。此外,如果accessKeyId或secretAccessKey错误,则getSignedUrl调用将失败。事实上,S3API中存在这样的调用!