繁体   English   中英

上载到Amazon S3失败

[英]Uploading to amazon s3 fails

我有html这个网页

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="https://cdnjs.cloudflare.com/ajax/libs/aws-sdk/2.171.0/aws-sdk.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>
            AWS.config.update({accessKeyId: '', secretAccessKey: ''});
            var s3BucketName = '';
            var s3RegionName = 'US East (Ohio)';

            function uploadFile() {
                var s3 = new AWS.S3({params: {Bucket: s3BucketName, Region: s3RegionName}});
                var file = document.getElementById('fileToUpload').files[0];
                if (file) {
                    s3.putObject({Key: file.name, ContentType: file.type, Body: file, ACL: "public-read"},
                    function(err, data) {
                        if (data !== null) {
                            alert("Successful upload");
                        }
                        else {
                            alert("Upload failed");
                        }
                    });
                }
            }
        </script>
    </head>
    <body>
        <input type="file" id="fileToUpload"/>
        <button onclick="uploadFile()">Upload to S3</button>
    </body>
</html>

这是cors规则

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>http://*</AllowedOrigin>
    <AllowedOrigin>https://*</AllowedOrigin>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
    <ExposeHeader>Content-Range</ExposeHeader>
    <ExposeHeader>Content-Encoding</ExposeHeader>
    <ExposeHeader>Content-Length</ExposeHeader>
    <ExposeHeader>Access-Control-Allow-Origin</ExposeHeader>
</CORSRule>
</CORSConfiguration>

我将网页另存为cors.html并打开并尝试上传。 我已经删除了使用的凭据。

即使我在s3上更新了cors配置,我仍然收到此错误

跨域请求被阻止:“相同来源策略”不允许在https://*.s3.amazonaws.com/cors.html上读取远程资源。 (原因:CORS标头“ Access-Control-Allow-Origin”缺失)。

为什么即使我已更新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>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
        <ExposeHeader>Accept-Ranges</ExposeHeader>
        <ExposeHeader>Content-Range</ExposeHeader>
        <ExposeHeader>Content-Encoding</ExposeHeader>
        <ExposeHeader>Content-Length</ExposeHeader>
        <ExposeHeader>Access-Control-Allow-Origin</ExposeHeader>
    </CORSRule>
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
        <ExposeHeader>Accept-Ranges</ExposeHeader>
        <ExposeHeader>Content-Range</ExposeHeader>
        <ExposeHeader>Content-Encoding</ExposeHeader>
        <ExposeHeader>Content-Length</ExposeHeader>
        <ExposeHeader>Access-Control-Allow-Origin</ExposeHeader>
    </CORSRule>
</CORSConfiguration>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM