amazon-s3 - 在 S3/CF 上托管 Javascript 的推荐 CORS 配置是什么?

标签 amazon-s3 cors amazon-cloudfront

我已经看到了类似问题的答案,但我想知道在 2017 年,如果我想限制对 *.domain.tld 的合法访问,为 S3/CF 配置 CORS 的最佳方法是什么。 Javascript 从 CF 加载,并使用对 api.domain.tld 的 Ajax 请求呈现 Web 应用程序。

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

我还可以添加其他内容来改进 CORS 设置吗?

最佳答案

以下是进行 CORS 配置的一般规则:

1)A valid CORS configuration consists of 0 to 100 CORS rules.
2)Each rule must include at least one origin.
3)An origin may contain at most one wildcard *
4)Each rule must include at least one method.
5)The supported methods are: GET, HEAD, PUT, POST, DELETE.
6)Each rule may contain an identifying string of up to 255 characters.
7)Each rule may specify zero or more allowed request headers (which the client may include in the request).
8)Each rule may specify zero or more exposed response headers (which are sent back from the server to the client).
9)Each rule may specify a cache validity time of zero or more seconds. If not included, the client should supply their own default.

最近我参与了一个 JS/CF 项目,这是我的 CORS 配置。

<CORSConfiguration>
<CORSRule>
    <ID>example.com: Allow PUT & POST with AWS S3 JS
    SDK</ID>
    <AllowedOrigin>https://www.example.com</AllowedOrigin>
    <AllowedOrigin>http://www.example.com</AllowedOrigin>
    <AllowedOrigin>https://example.com</AllowedOrigin>
    <AllowedOrigin>http://example.com</AllowedOrigin>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedHeader>Origin</AllowedHeader>
    <AllowedHeader>Content-Length</AllowedHeader>
    <AllowedHeader>Content-Type</AllowedHeader>
    <AllowedHeader>Content-MD5</AllowedHeader>
    <AllowedHeader>X-Amz-User-Agent</AllowedHeader>
    <AllowedHeader>X-Amz-Date</AllowedHeader>
    <AllowedHeader>Authorization</AllowedHeader>
    <ExposeHeader>ETag</ExposeHeader>
    <MaxAgeSeconds>1800</MaxAgeSeconds>
</CORSRule>
<CORSRule>
    <ID>example.com: Allow GET with AWS S3 JS SDK</ID>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
    <ExposeHeader>ETag</ExposeHeader>
    <MaxAgeSeconds>1800</MaxAgeSeconds>
</CORSRule>
</CORSConfiguration>

更多详细信息您可以找到here

谢谢

关于amazon-s3 - 在 S3/CF 上托管 Javascript 的推荐 CORS 配置是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41664431/

相关文章:

amazon-web-services - 如何为 CfnDistribution 添加 Route53 别名?

http - CloudFront 签名 URL 抛出 403 禁止错误

amazon-web-services - 使用 Lambda、API Gateway 和 Cloudfront 时,尽管在 Lambda 响应中指定了 'Access-Control-Allow-Origin',但 CORS 错误

ruby-on-rails - 使用Paperclip和IAM策略将文件上传到Amazon时访问被拒绝

ruby-on-rails - Carrierwave+fog+s3 不适用于 Cloud Front URL

amazon-web-services - AWS S3 重定向规则不允许我保存它

javascript - AWS S3 - CORS 选项预检在使用 VersionId 删除期间抛出 400 错误请求

java - IntelliJ 静态 Web 项目到 Tomcat 或 Angular COR

amazon-web-services - s3 - 如何获得文件的快速行数? wc -l 太慢了

c# - 如何在 ASP.NET Core Web API 项目中允许使用 IP 地址进行 CORS?