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

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,也欢迎您在评论中分享您的使用经验和体会。

 

 

 

 

你可能感兴趣的:(Amazon支持跨域资源分享功能CORS,向S3上传不再需要代理)