Javascript 无法在Ajax调用中将图像上载到Amazon S3
我试图通过Ajax调用将图像上传到Amazon S3,但出现如下错误: 无法加载XmlHttpRequest。没有“访问控制-Javascript 无法在Ajax调用中将图像上载到Amazon S3,javascript,ajax,amazon-web-services,amazon-s3,Javascript,Ajax,Amazon Web Services,Amazon S3,我试图通过Ajax调用将图像上传到Amazon S3,但出现如下错误: 无法加载XmlHttpRequest。没有“访问控制- 请求的资源上存在Allow_Origin标头。因此,不允许访问源“null” 我的JavaScript是这样的: var xmlhttp = XmlHttpRequesr(); var file = document.getElementById('file').files[0]; var fd = new FormData(); var
请求的资源上存在Allow_Origin标头。因此,不允许访问源“null” 我的JavaScript是这样的:
var xmlhttp = XmlHttpRequesr();
var file = document.getElementById('file').files[0];
var fd = new FormData();
var key = "events/" + (new Date).getTime() + '-' + file.name;
POLICY_JSON = {"expiration": "20020-01-01T00:00:00Z","conditions": [ {"bucket": "s3-bucket"},
["starts-with", "$key", ""], {"acl": "private"},{"success_action_redirect": "LOCALHOST"},
["starts-with", "$Content-Type", ""], ["content-length-range", 0, 1048576] ] };
var secret = this.get('key');
var policyBase64 = window.btoa(JSON.stringify(POLICY_JSON));
console.log ( policyBase64 );
var signature = b64_hmac_sha1(secret, policyBase64);
b64_hmac_sha1(secret, policyBase64);
fd.append('key', 'uploads/${filename}');
fd.append('acl', 'private');
fd.append('Content-Type', file.type);
fd.append('AWSAccessKeyId', key);
fd.append('policy', policyBase64);
fd.append('signature',signature);
fd.append("file",file); xmlhttp.open('POST', Url, true); xmlhttp.send(fd); }
有人能帮我解决这个问题吗?希望你能解决这个问题。如果没有,我可以提供一点帮助。我刚开始搞砸AmazonS3,但我觉得您需要设置访问控制设置 然后点击你的桶。然后单击属性 您必须设置桶策略和CORS策略 我首先将bucket策略设置为admin,这样就可以进行上传。然后找出你想做的事情的最低限度,这样你就不会让大门敞开 CORS政策也很重要。我担心我的太松了,不确定。但不管怎样,它是有效的:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
*
得到
邮递
3000
*
Ya谢谢你,我已经修复了这个错误,我想知道的一件事是在上传了它的状态代码303之后,我如何修复这个错误???