【问题标题】:Hosting a dynamic site on S3 via async cross-origin request通过异步跨域请求在 S3 上托管动态站点
【发布时间】:2023-03-09 16:05:01
【问题描述】:

我意识到我可以在 S3(html、js、css 等)上托管整个网站,并且仍然可以通过在页面加载时与数据库(对我来说是 EC2)进行异步通信来使其保持动态。即使 index.html 文件位于 S3 上,我也可以启用跨域请求以拥有“动态”站点。

我想知道是否有人这样做了,是否有任何我应该记住的安全警告?

对我来说,这是一个非常可扩展(而且便宜!)的服务器端架构。我的服务器永远不必发送一行 html。它的唯一负载是发送和接收 JSON 的 sn-ps。如果我的服务器负载很重,它还可以非常简单地切换“静态”标志,并简单地从 S3 提供所有内容。

【问题讨论】:

标签: amazon-s3 cross-domain cors


【解决方案1】:

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

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

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

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

0) jsonp

1)Access-Control-Allow-Origin:

2) 设置document.domain 允许通信

3)window.postMessage

对于在 S3 上托管静态资产,JSONP 非常棒,但当它是您的网站离开 S3 而不是资产时,JSONP 可能发挥最大作用(而在这里,您的网站是 S3 并且您与其他服务器通信)。

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

这是我的观点,但如果您正在为现代浏览器编写代码,请走 CORS 路线。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-10
  • 1970-01-01
  • 2017-01-20
  • 2011-12-23
  • 2013-05-07
  • 2020-11-01
  • 2021-01-13
相关资源
最近更新 更多