403禁止-使用带有预签名URL的Angularjs将文件上载到Amazon S3 bucket

403禁止-使用带有预签名URL的Angularjs将文件上载到Amazon S3 bucket,angularjs,amazon-s3,file-upload,Angularjs,Amazon S3,File Upload,我正在尝试使用预先签名的url上载图像/音乐文件。但我得到了403个禁止的错误。我已经使用下面的文档实现了 $http.put($scope.uploadFileLocation["presigned-url-bkgd-img"], document.getElementById('backgroundImage').files[0], { headers: { 'Content-Type': document.get

我正在尝试使用预先签名的url上载图像/音乐文件。但我得到了403个禁止的错误。我已经使用下面的文档实现了

 $http.put($scope.uploadFileLocation["presigned-url-bkgd-img"],
           document.getElementById('backgroundImage').files[0],
           { headers: {
               'Content-Type': document.getElementById('backgroundImage').files[0].type }
           })
        .success(function (resp) {
          //Finally, We're done
          alert('Upload Done!' + resp);
        })
        .error(function (resp) {
          alert("An Error Occurred Attaching Your File" + resp);
        });

因此,关于您面临的问题的主题称为CORS,跨源资源共享。这对于AmazonWeb服务来说是很好的安全性。恶意用户可以访问您的s3存储桶以上载图像,而无需为此付费

首先,我要检查您的应用程序是否需要用户登录,换句话说,您的应用程序是否有用户登录以使用应用程序的想法。如果是这样,那么您可能需要相应地配置您的项目,例如,获取需要用户登录才能执行任何操作的中间件,并将其作为参数放到路由请求中,以
/api/upload

其次,检查您的亚马逊3->my-bucket-123并单击权限选项卡

您可能需要对其进行如下配置:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="https://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>Authorization</AllowedHeader>
    </CORSRule>

    <CORSRule>
        <AllowedOrigin>http://localhost:3000</AllowedOrigin>
        <AllowedMethod>PUT</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

*
得到
3000
授权
http://localhost:3000
放
3000
*

因此,关于您面临的问题的主题被称为CORS,跨源资源共享。这对于AmazonWeb服务来说是很好的安全性。恶意用户可以访问您的s3存储桶以上载图像,而无需为此付费

首先,我要检查您的应用程序是否需要用户登录,换句话说,您的应用程序是否有用户登录以使用应用程序的想法。如果是这样,那么您可能需要相应地配置您的项目,例如,获取需要用户登录才能执行任何操作的中间件,并将其作为参数放到路由请求中,以
/api/upload

其次,检查您的亚马逊3->my-bucket-123并单击权限选项卡

您可能需要对其进行如下配置:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="https://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>Authorization</AllowedHeader>
    </CORSRule>

    <CORSRule>
        <AllowedOrigin>http://localhost:3000</AllowedOrigin>
        <AllowedMethod>PUT</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

*
得到
3000
授权
http://localhost:3000
放
3000
*