我正在当前的工作场所编写ROI计算器脚本。该计算器旨在显示某人使用我们的包裹等可以节省多少...
该表格要求该人员在提交时填写姓名/电子邮件/电话。该数据将解析为JSON格式,然后尝试将其放入Amazon AWS服务器。
我正在使用JavaScript SDK API生成预签名的URL,以在我的AJAX PUT请求中使用。我在请求中尝试了各种参数,但仍收到403错误,该错误是-“对预检请求的响应未通过访问控制检查:所请求的资源上没有'Access-Control-Allow-Origin'标头。Origin'因此不允许访问“ null”。响应的HTTP状态码为403。
当我查看响应时,它是这样的-
禁止访问 CORSResponse:未为此存储桶启用CORS。
如果我单击我console.log上的实际签名URL,我会得到这个-
SignatureDoesNotMatch
我们计算出的请求签名与您提供的签名不匹配。检查您的密钥和签名方法。
我已经与监视此存储桶的团队进行了核对,签名和密钥正确,并且在存储桶上启用了CORS。这让我发疯了!
我还应该补充一点,我也尝试过仅使用GET,并且存在相同的错误。
这是我的预签名URL和AJAX请求的代码-
var s3 = new AWS.S3 ({
accessKeyId: 'xxxxxxxxxxxxxxxxx',
secretAccessKey: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
});
var uploadPreSignedUrl = s3.getSignedUrl('putObject', {
Bucket: 'bucket name',
Key: 'path stuff here' + username variable + '.JSON',
ACL: 'authenticated-read',
ContentType: 'application/json'
});
$.ajax({
type: "PUT",
url: uploadPreSignedUrl,
headers: {
"Content-Type": "application/json"
},
data: JSON.stringify(userInfo),
success: function (msg) {
console.log(msg);
},
error: function (request, status, error) {
console.log(status);
}
});
答案 0 :(得分:0)
我能够解决此问题...事实证明,需要在API网关上启用CORS的后端团队以及实际的存储桶本身。我的预签名URL正常工作,并且AJAX调用也正确。希望这能对以后的人有所帮助。