Amazon 亚马逊 AWS S3 跨源资源共享 (CORS)设置

  • 跨源资源共享:使用案例场景
    • 方案 1
    • 方案 2
  • AllowedMethod 元素
  • AllowedOrigin 元素
  • AllowedHeader 元素
  • ExposeHeader 元素
  • MaxAgeSeconds 元素
  • Amazon S3 如何评估针对存储桶的 CORS 配置?

跨源资源共享 (CORS) 定义了在一个域中加载的客户端 Web 应用程序与另一个域中的资源交互的方式。利用 CORS 支持,您可以使用 Amazon S3 构建丰富的客户端 Web 应用程序,同时可以选择性地允许跨源访问您的 Amazon S3 资源。

本部分提供 CORS 概述。副主题介绍如何通过使用 Amazon S3 控制台或以编程方式使用 Amazon S3 REST API 和 AWS 开发工具包来启用 CORS。

主题

跨源资源共享:使用案例场景

如何在我的存储桶上配置 CORS?

Amazon S3 如何评估针对存储桶的 CORS 配置?

允许跨源资源共享 (CORS)

排查 CORS 问题

跨源资源共享:使用案例场景

以下是有关使用 CORS 的示例场景。

方案 1

假设您在名为 website 的 Amazon S3 存储桶中托管网站(如在 Amazon S3 上托管静态网站中所述)。您的用户加载了网站终端节点。

http://website.s3-website.us-east-1.amazonaws.com

现在,您想要使用此存储桶中存储的网页上的 JavaScript,以便能够使用该存储桶的 Amazon S3 API 终端节点 website.s3.us-east-1.amazonaws.com 向同一存储桶发出经身份验证的 GET 和 PUT 请求。浏览器通常会阻止 JavaScript 允许这些请求,但借助 CORS,您可以配置您的存储桶以显式支持来自 website.s3-website.us-east-1.amazonaws.com 的跨源请求。

方案 2

假设您想要托管来自您的 S3 存储桶的 Web 字体。浏览器会再次要求对正在加载的 Web 字体进行 CORS 检查 (也称为预检)。您可以配置托管 Web 字体的存储桶,以允许任何源发出这些请求。

如何在我的存储桶上配置 CORS?
要将您的存储桶配置为允许跨源请求,您可以创建一个 CORS 配置,该配置是一个 XML 文档,其中包含一些规则,它们能够识别您允许访问存储桶的源、每个源支持的操作 (HTTP 方法) 以及其他特定于操作的信息。

您可以向配置添加最多 100 条规则。通过编程方式或使用 Amazon S3 控制台将 XML 文档作为 cors 子资源添加到存储桶。有关更多信息,请参阅 允许跨源资源共享 (CORS)。

您可以使用自己的域(例如 example1.com)提供内容,而不是通过使用 Amazon S3 网站终端节点来访问网站。有关如何使用您自己的域的信息,请参阅使用注册到 Route 53 的自定义域配置静态网站。以下示例 cors 配置具有三个规则,这些规则被指定为 CORSRule 元素:

第一个规则允许来自 http://www.example1.com 源的跨源 PUT、POST 和 DELETE 请求。该规则还通过 Access-Control-Request-Headers 标头允许预检 OPTIONS 请求中的所有标头。作为对预检 OPTIONS 请求的响应,Amazon S3 将返回请求的标头。

第二个规则允许与第一个规则具有相同的跨源请求,但第二个规则应用于另一个源 http://www.example2.com。

第三个规则允许来自所有源的跨源 GET 请求。* 通配符将引用所有源。

<CORSConfiguration><CORSRule><AllowedOrigin>http://www.example1.com</AllowedOrigin><AllowedMethod>PUT</AllowedMethod><AllowedMethod>POST</AllowedMethod><AllowedMethod>DELETE</AllowedMethod><AllowedHeader>*</AllowedHeader></CORSRule><CORSRule><AllowedOrigin>http://www.example2.com</AllowedOrigin><AllowedMethod>PUT</AllowedMethod><AllowedMethod>POST</AllowedMethod><AllowedMethod>DELETE</AllowedMethod><AllowedHeader>*</AllowedHeader></CORSRule><CORSRule><AllowedOrigin>*</AllowedOrigin><AllowedMethod>GET</AllowedMethod></CORSRule>
</CORSConfiguration>

CORS 配置还允许可选的配置参数,如下面的 CORS 配置所示。在本示例中,CORS 配置允许来自 http://www.example.com 源的跨源 PUT、POST 和 DELETE 请求。

<CORSConfiguration><CORSRule><AllowedOrigin>http://www.example.com</AllowedOrigin><AllowedMethod>PUT</AllowedMethod><AllowedMethod>POST</AllowedMethod><AllowedMethod>DELETE</AllowedMethod><AllowedHeader>*</AllowedHeader><MaxAgeSeconds>3000</MaxAgeSeconds><ExposeHeader>x-amz-server-side-encryption</ExposeHeader><ExposeHeader>x-amz-request-id</ExposeHeader><ExposeHeader>x-amz-id-2</ExposeHeader></CORSRule>
</CORSConfiguration>

上述配置中的 CORSRule 元素包括以下可选元素:

MaxAgeSeconds - 指定在 Amazon S3 针对特定资源的预检 OPTIONS 请求做出响应后,浏览器缓存该响应的时间(以秒为单位,在本示例中为 3000 秒)。通过缓存响应,在需要重复原始请求时,浏览器无需向 Amazon S3 发送预检请求。ExposeHeader - 识别可让客户从应用程序(例如,从 JavaScript XMLHttpRequest 对象)进行访问的响应标头(在本示例中,为 x-amz-server-side-encryption、x-amz-request-id 和 x-amz-id-2)。

AllowedMethod 元素

在 CORS 配置中,您可以为 AllowedMethod 元素指定以下值。

GETPUTPOSTDELETEHEAD

AllowedOrigin 元素

在 AllowedOrigin 元素中,可指定您希望允许从中发送跨源请求的源,例如 http://www.example.com。源字符串只能包含至少一个 * 通配符,例如 http://*.example.com。您可以选择将 * 指定为源,以允许所有源发送跨源请求。您还可以指定 https 只允许安全的源。

AllowedHeader 元素

AllowedHeader 元素通过 Access-Control-Request-Headers 标头指定预检请求中允许哪些标头。Access-Control-Request-Headers 标头中的每个标头名称必须匹配规则中的相应条目。Amazon S3 将仅在响应中发送请求的允许标头。有关可以在发送至 Amazon S3 的请求中使用的标头示例列表,请参阅 Amazon Simple Storage Service API Reference 指南中的常用请求标头。

规则中的每个 AllowedHeader 字符串可以包含至少一个 * 通配符字符。例如,<AllowedHeader>x-amz-*</AllowedHeader> 将允许所有特定于 Amazon 的标头。

ExposeHeader 元素

每个 ExposeHeader 元素标识您希望客户能够从其应用程序 (例如,从 JavaScript XMLHttpRequest 对象) 进行访问的响应标头。有关常用 Amazon S3 响应标头的列表,Amazon Simple Storage Service API Reference指南中的常用响应标头。

MaxAgeSeconds 元素

MaxAgeSeconds 元素指定在预检请求被资源、HTTP 方法和源识别之后,浏览器将为预检请求缓存响应的时间 (以秒为单位)。

Amazon S3 如何评估针对存储桶的 CORS 配置?

Amazon S3 收到来自浏览器的预检请求后,它将为存储桶评估 CORS 配置,并使用第一个匹配传入浏览器请求的 CORSRule 规则来实现跨源请求。要使规则实现匹配,必须满足以下条件:

请求的 Origin 标头必须匹配 AllowedOrigin 元素。预检 Access-Control-Request-Method 请求中的请求方法 (例如,GET 或 PUT) 或 OPTIONS 标头必须是某个 AllowedMethod 元素。在预检请求中,请求的 Access-Control-Request-Headers 标头中列出的每个标头必须匹配 AllowedHeader 元素。

.
.
.

参考内容(https://docs.amazonaws.cn/AmazonS3/latest/dev/cors.html)

Amazon 亚马逊 AWS S3 跨源资源共享 (CORS)设置相关推荐

  1. 树莓派Zero W发布;亚马逊 AWS S3 服务出现故障 | IoT黑板报

    树莓派Zero W发布,配有Wi-Fi和蓝牙售价10美元 @cnBeta 为了庆祝树莓派的第五个生日,树莓派基金会推出了树莓派Zero W,它本质上是树莓派Zero ,但是添加了许多用户一直要求的功能 ...

  2. Node开发文件上传系统及向七牛云存储和亚马逊AWS S3的文件上传

    背景起,有奏乐: 有伟人曰:学习技能的最好途径莫过于理论与实践相结合. 初学Node这货时,每每读教程必会Fall asleep. 当真要开发系统时,顿觉精神百倍,即便踩坑无数也不失斗志. 因为同团队 ...

  3. Ubuntu 配置亚马逊 aws cli 上传文件文件夹至 亚马逊 AWS S3

    当使用亚马逊云服务器进行深度学习模型训练时,需要将数据集上传,相比使用 UI 界面上传,使用命令行方式具有更快的上传速率. 配置步骤 安装 aws cli 客户端: pip install awscl ...

  4. aws签名 php,创建亚马逊AWS S3预签名URL PHP - php

    根据此链接http://docs.aws.amazon.com/aws-sdk-php/v2/guide/service-s3.html,我可以轻松地创建一个预签名链接,只需将寿命添加到getObje ...

  5. Qtum量子链与亚马逊AWS中国云服务达成合作

    全球最大的云上技术服务平台亚马逊网络服务(AWS)中国区正式宣布与Qtum量子链合作 昨日,AWS中国区域业务开发主管Simon Wang证实了这一合作关系,并在电子邮箱中向外国媒体CoinDesk说 ...

  6. 亚马逊aws深度学习_AWS速查表:Amazon Web Services入门时首先要学习的5件事

    亚马逊aws深度学习 AWS has taken the tech community by storm. It's easily sold as one of the most reliable p ...

  7. 阿里巴巴 OSS与AWS(亚马逊) S3 和腾讯云cos 存储服务 介绍篇

    前言 对象存储服务,简单来说,可以把它当成一个"网盘",可以上传下载数据,也可以直接在这个"网盘"中对文件进行某些操作. 1.定时或者基于某种条件自动地,每天从 ...

  8. Amazon亚马逊跨境电商信息与图片爬取

    Amazon亚马逊跨境电商产品图片爬取 从BestSeller中获取热销排行产品链接 # -*- codeing = utf-8 -*- # @Time: 2021/1/10 11:50 # @Fil ...

  9. 全球公有云巨头:亚马逊 AWS

    来源:乐晴智库精选 摘要:亚马逊AWS目前拥有超过1500种产品和2100余种第三方模块,为全球190个国家的企业提供支持. AWS作为亚马逊旗下的云计算服务平台,面向全世界范围的用户提供包括弹性计算 ...

  10. 亚马逊 aws 指南 实战_减少您的AWS成本完整指南

    亚马逊 aws 指南 实战 Do you think your cloud costs are too high? I think most businesses can find savings i ...

最新文章

  1. 物联网可应用于十大行业嘛?
  2. for、while循环及其变体
  3. 记IOS8中碰到的一个JS bug
  4. 谷歌放弃C++语言,Python将要一统江湖了?
  5. C语言之32个关键字
  6. [排版题] 例4.1 输出梯形
  7. Excel写入与保存openpyxl
  8. openpyxl 2.5.0中文文档
  9. Spring Cloud(Greenwich版)-05-Spring Cloud集成Ribbon(客户端负载均衡组件)
  10. 大型分布式订单系统项目实战
  11. Kconfig的两种用法
  12. Linux spi驱动分析(四)----SPI设备驱动(W25Q32BV)
  13. 【CSGO】Akuma正式解散 !各奔东西 被NAVI撞碎了?
  14. 简单的链表封装(类)
  15. 室内环境下的3D 目标检测调研
  16. 计算机软故障分为哪几种,计算机常见故障可分为硬件和软件故障,具体介绍
  17. C#高效编程--改进C#代码的50个行之有效的办法笔记
  18. 湍流参数计算c语言,力扣978.最长湍流子数组-C语言
  19. 【Android技巧】通过am完成发送开机广播等操作
  20. 国外的一些测试技术网站

热门文章

  1. url 后面参数说明
  2. 【物联网毕设基础】NBIOT 窄带物联网
  3. 如何维持手机电池寿命_关于如何延长智能手机电池寿命的一些提示
  4. 《数学之美》读书记录(一)
  5. 用php搭建微信公众号,用PHP搭建一个自己的微信公众号
  6. js实现连续英文字符自动换行
  7. 2016依然会给我惊喜,谢谢
  8. [LiteratureReview]A Collaborative Visual SLAM Framework for Service Robots
  9. Snapper 快照管理工具
  10. uni-app设置背景图片,backgroundImage