通过异步跨源请求在S3上托管动态站点

时间:2012-04-05 16:56:10

标签: amazon-s3 cross-domain cors

我意识到我可以在S3(html,js,css等)上托管整个站点,并且在页面加载时通过异步通信到数据库(在我的EC2上)仍然是动态的。即使index.html文件在S3上,我也可以启用跨源请求以拥有“动态”站点。

我想知道人们是否已经这样做了,如果有任何安全警告我应该记住吗?

对我来说,这是一个极其可扩展(且便宜!)的服务器端架构。我的服务器永远不必发送一行HTML。它唯一的负载是发送和接收JSON的片段。如果我的服务器负载很重并且只是为S3提供服务​​,它还可以非常简单地切换“静态”标志。

1 个答案:

答案 0 :(得分:1)

S3上的静态站点很容易,添加CloudFront CDN支持是轻而易举的。

因为跨域资格基于元组{domain,protocol,port}所以跨域考虑确实起作用。

但是,标准的跨域解决方法仍然适用。

我用于通过iFrame或其他方式进行跨域通信的示例技术:

0)jsonp

1)Access-Control-Allow-Origin

2)设置document.domain以允许通信

3)window.postMessage

对于在S3上托管静态资产,JSONP很棒,但是当它是你的网站关闭S3而不是资产时可能会发挥作用(而在这里,你的网站是S3并且你正在与其他服务器通信)。

Access-Control-Allow-Origin将为您提供所有现代浏览器,并允许您跨域安全地或不安全地说话。 IE提出并支持不同(且更安全)的标准,但预计将在IE10中支持CORS。

这是我的意见,但如果您正在为现代浏览器编码,请转到CORS路线。