403禁止-使用带有预签名URL的Angularjs将文件上载到Amazon S3 bucket
我正在尝试使用预先签名的url上载图像/音乐文件。但我得到了403个禁止的错误。我已经使用下面的文档实现了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
$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
*