Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在Ajax调用中将图像上载到Amazon S3_Javascript_Ajax_Amazon Web Services_Amazon S3 - Fatal编程技术网

Javascript 无法在Ajax调用中将图像上载到Amazon S3

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

我试图通过Ajax调用将图像上传到Amazon S3,但出现如下错误:

无法加载XmlHttpRequest。没有“访问控制-
请求的资源上存在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之后,我如何修复这个错误???