【发布时间】:2020-04-11 06:03:07
【问题描述】:
我正在尝试在我的 ASP.NET Core 3 Web 应用程序中使用 AWS js SDK 来访问客户端上的 s3 存储桶,但它不起作用。
-
我创建了一个存储桶并向其中添加了以下 CORS 配置:
<?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>HEAD</AllowedMethod> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <ExposeHeader>ETag</ExposeHeader> <AllowedHeader>*</AllowedHeader> </CORSRule> </CORSConfiguration> 我创建了一个新的 IAM 用户,该用户具有 AmazonS3FullAccess 权限以及 AccessKey 和 Secret。
-
我添加了一个简单的视图来验证它与以下脚本部分:
<script src="/lib/aws/aws-sdk-2.592.0.js"></script> <script language="javascript"> $(function() { AWS.config.update({ region: 'eu-west-2', credentials: new AWS.Credentials('<key>', '<secret>') }); var s3 = new AWS.S3({ apiVersion: '2006-03-01', params: { Bucket: '<bucket>' } }); s3.listObjectsV2(function(err, data) { if (err) console.log(err, err.stack); else { data.Contents.forEach(function(element) { var row = "<tr>" + "<td>" + element.Key + "</td>" + "<td>" + element.LastModified + "</td>" + "<td>" + element.Etag + "</td>" + "<td>" + element.Size + "</td>" + "<td>" + element.StorageClass + "</td>" + "</tr>" $('#objects-list-table tbody').append(row); }); } }); }); </script>
而且我在浏览器控制台中不断收到以下错误,例如没有为存储桶配置 CORS:
Access to XMLHttpRequest at 'https://<bucket>.s3.eu-west-2.amazonaws.com/?list-type=2' from origin 'https://localhost:5001' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Access to XMLHttpRequest at 'https://<bucket>.s3.amazonaws.com/?max-keys=0' from origin 'https://localhost:5001' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.
我的配置有什么问题?如何让它发挥作用?
【问题讨论】:
标签: javascript amazon-web-services amazon-s3