我正在尝试使用angular客户端将文件上传到Amazon S3 . 我使用NodeJs应用程序服务器生成了Presigned URL . 在将文件上传到预签名URL时,我收到错误:
“因此不允许对预检请求做出响应't pass access control check: No ' Access-Control-Allow-Origin ' header is present on the requested resource. Origin ' http://localhost:4200” .
我已将以下CORS配置添加到我的存储桶权限中 .
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
2 回答
某些浏览器不支持来自Localhost的CORS请求,例如Chrome . 尝试使用lvh.me:4200进行测试 .
虽然您的浏览器可能不支持localhost作为与AllowedOrigin匹配的有效源,但您可能还需要检查从S3获取的内容是否实际上正确具有您期望的正确标头以及您的存储桶是否已正确设置 . 您可以通过chrome开发人员工具执行此操作:https://developers.google.com/web/tools/chrome-devtools/network-performance/reference#headers
http://127.0.0.1也是localhost的有效域(在大多数操作系统上),应该与大多数浏览器兼容,以便与AllowedOrigin进行匹配 .