2012-04-05 39 views
5

我意識到我可以在S3(html,js,css等)上託管整個站點,並且仍然通過異步通信到數據庫(在EC2上)對我來說)頁面加載。即使index.html文件位於S3上,我也可以使跨源請求具有「動態」網站。通過異步跨域請求在S3上託管一個動態站點

我想知道如果有人這樣做,如果有任何安全警告我應該記住?

對我來說,這是一個極具擴展性(而且便宜!)的服務器端架構。我的服務器永遠不必發送一行html。它唯一的負載是發送和接收JSON片段。如果我的服務器負載很重並且只是提供S3中的所有內容,它也使得切換「靜態」標誌變得非常簡單。

+0

顯然有幾個人(自本週以來,包括我自己)都想出了這些想法。 http://www.allthingsdistributed.com/2011/08/Jekyll-amazon-s3.html http://davidvaldman.com/post/20588533081/s3dynamiccors 我能想到的唯一問題是如果您需要更改用於呈現內容的模板(例如,如果您的靜態文件所服務的域發生更改)。爲此,需要一些批量更新工具,並且在更新完成之前,您的站點將沒有一致的佈局。我仍然想知道這種方法還有什麼缺點。 – primroot 2012-10-18 21:56:09

回答

1

S3上的靜態站點非常簡單,添加CloudFront CDN支持非常輕鬆。

由於跨域限定條件基於元組{域,協議,端口},因此跨域考慮因素會發揮作用。

但是,標準的跨域解決方法仍然適用。

示例技術我使用經由的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路線。

+0

一個重要的說明,jsonp在性能方面不匹配相同的域ajax(來源:http://jsperf.com/ajax-jsonp-vs-ajax-json) – 2014-06-19 01:26:52