aws-sdk 抱怨缺少实际存在的 cors 标头

Rob*_*ers 6 amazon-s3 amazon-web-services aws-sdk-js

使用 webpack 运行开发服务器,我尝试列出 S3 存储桶中的项目并在浏览器中使用 javascript aws-sdk 控制台输出结果。

\n\n

这样做时我收到此错误:

\n\n
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://bucketname.s3.amazonaws.com/?list-type=2&max-keys=2. (Reason: CORS header \xe2\x80\x98Access-Control-Allow-Origin\xe2\x80\x99 missing).\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是我在 webpack 开发服务器配置中设置了该标头,并通过以下方式证明:

\n\n
curl -I http://localhost:8080\n\nHTTP/1.1 200 OK\nX-Powered-By: Express\nAccess-Control-Allow-Origin: *\nAccess-Control-Allow-Methods: GET, POST, PUT, DELETE, PATCH, OPTIONS\nAccess-Control-Allow-Headers: X-Requested-With, content-type, Authorization\nX-Content-Type-Options: nosniff\nContent-Type: text/html; charset=utf-8\nContent-Length: 7170\nVary: Accept-Encoding\nDate: Sat, 02 Dec 2017 16:15:04 GMT\nConnection: keep-alive\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以我在所有事情上都尝试了*:

\n\n
HTTP/1.1 404 Not Found\nX-Powered-By: Express\nAccess-Control-Allow-Origin: *\nAccess-Control-Allow-Methods: *\nAccess-Control-Allow-Headers: *\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果标头存在,但错误提示标头丢失,是否可能是授权等其他原因?

\n\n

如果它确实是标头设置,那么如果标头确实存在,下一步将是什么?

\n\n

更新****

\n\n

1:在S3上添加CORS设置,尽管我相信它抱怨的标头不会在S3上:

\n\n
<?xml version="1.0" encoding="UTF-8"?>\n<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">\n<CORSRule>\n    <AllowedOrigin>*</AllowedOrigin>\n    <AllowedMethod>GET</AllowedMethod>\n    <MaxAgeSeconds>3000</MaxAgeSeconds>\n    <AllowedHeader>Authorization</AllowedHeader>\n</CORSRule>\n</CORSConfiguration>\n
Run Code Online (Sandbox Code Playgroud)\n\n

此外,存储桶未启用公共或静态托管。

\n\n

2:这有效:

\n\n
<?xml version="1.0" encoding="UTF-8"?>\n<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">\n<CORSRule>\n    <AllowedOrigin>*</AllowedOrigin>\n    <AllowedMethod>GET</AllowedMethod>\n    <AllowedMethod>PUT</AllowedMethod>\n   <AllowedMethod>POST</AllowedMethod>\n   <AllowedMethod>DELETE</AllowedMethod>\n   <AllowedHeader>*</AllowedHeader>\n    <MaxAgeSeconds>3000</MaxAgeSeconds>\n    <AllowedHeader>Authorization</AllowedHeader>\n</CORSRule>\n</CORSConfiguration>\n
Run Code Online (Sandbox Code Playgroud)\n\n

来自标记答案给出的 URL

\n

and*_*ing 3

我希望阅读本文可以有所帮助:http://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html

你如何设置你的CORS,是使用xml文件吗?