BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Amazon支持跨域资源分享功能CORS,向S3上传不再需要代理

| 作者 郑柯 关注 3 他的粉丝 发布于 2012年9月3日. 估计阅读时间: 2 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

9月1日,Amazon AWS宣布:支持跨域资源分享(Cross-Origin Resource Sharing,简称CORS)。

CORS是W3C标准化组织提出的一种规范机制,允许客户端的跨域请求。API可以使用规范中定义的算法,请求跨域的资源。开发人员构建的web程序,就可以请求提供主要内容的域之外其他域的内容。

AWS指出:之所以要这样做,是因为web浏览器使用了同域策略,以保证内容的安全性。该缺省策略确保来自一个站点和域的脚本和其他主动内容不会与另一个位置的内容发生交互,以避免产生不可预期的危险行为。但在某些情况下,一个域的开发人员也许有很合理的原因,访问其他位置的资源。CORS就是提供了这种机制,让开发人员告诉浏览器,允许这样的行为。

AWS的这篇博客中提出:

  • 你可以使用CORS支持,使用JavaScript和HTML 5来构建Web应用,直接访问Amazon S3中的资源,而不再需要代理服务器做中转。
  • 可以使用HTML 5中的拖拽功能,直接向S3上传文件,展示上传进度,或是直接从web应用中更新内容。
  • 托管在不同域中的外部网页、样式表和HTML 5应用,现在可以引用存储在S3中的web字体或图片,让这些资源能被多个网站共享。

Attachments.me的开发人员Ben Core尝试了S3提供的CORS,指出要想这样做需要的几个步骤:

  1. 创建CORS配置清单
      要说明允许访问S3中哪个bucket。清单中要包括:
    • 哪些域允许访问S3的bucket
    • 可以采取哪些动作(PUT, POST, GET, DELETE)
  2. 创建签名的POST参数
  3. 使用CORS完成浏览器端向Amazon S3上的上传。

Ben给出了示例代码,并指出要注意以下几点:

  • 使用了HTML 5中的FormData对象,以完成多部分上传,该API允许开发者跟踪实时的上传进度。
  • 创建的有特定签名的HTML POST参数加入了FormData对象,使用的是append()方法。
  • 代码在Chrome扩展插件中运行,要想在更多浏览器中运行,需要再做些其他工作。

如果您使用了Amazon的S3作为自己互联网访问的存储,不妨尝试一下CORS,也欢迎您在评论中分享您的使用经验和体会。

 

 

 

 

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT