简体   繁体   中英

Uploading to amazon s3 fails

I have this web page in 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>

and this is the cors rules

<?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>

I have saved the webpage as cors.html and opened it and tried to upload. I have removed the credentials used.

I keep getting this error even if i update the cors configuration on s3

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://*.s3.amazonaws.com/cors.html. (Reason: CORS header 'Access-Control-Allow-Origin' missing).

Why does the error keep re-occurring even if i have updated my cors rules to allow receive uploads from pretty much anywhere?.

This rules finally worked

<?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>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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