Javascript SPA-将客户端与服务器分离

Javascript SPA-将客户端与服务器分离,javascript,deployment,ember.js,single-page-application,sails.js,Javascript,Deployment,Ember.js,Single Page Application,Sails.js,我想在客户端使用Ember.js构建一个单页应用程序,并使用Sails.js构建RESTAPI 我想将客户机与服务器完全分离,并考虑将所有客户机资产(css、img和index.html)托管在CDN或s3中,而服务器可能托管在Horoku上 如何避免跨域问题?也许用CNAME 这是惯例吗 有哪些工具可用于此类部署过程 谢谢 您可以使用它。CORS是web服务器让web浏览器知道允许哪些第三方域(源)访问其内容的一种方式。因此,基本上,您希望确保您使用的任何CDN都支持CORS头,这样您就可以告

我想在客户端使用Ember.js构建一个单页应用程序,并使用Sails.js构建RESTAPI

我想将客户机与服务器完全分离,并考虑将所有客户机资产(css、img和index.html)托管在CDN或s3中,而服务器可能托管在Horoku上

如何避免跨域问题?也许用CNAME

这是惯例吗

有哪些工具可用于此类部署过程

谢谢

您可以使用它。CORS是web服务器让web浏览器知道允许哪些第三方域(源)访问其内容的一种方式。因此,基本上,您希望确保您使用的任何CDN都支持CORS头,这样您就可以告诉CDN将要加载资源的服务器的域

这里有一篇关于为您打开CORS的文章。它的基础是使用CDN服务器web字体,但这一概念同样适用于所有受保护的文件(即,除了加载在HTML中的CSS、图像和Javascript文件之外的所有文件)


您还可以使用另一个Sails服务器作为您的CDN,因为它支持CORS开箱即用(docs)。可能需要一些调整才能完成高端CDN所做的所有奇特的缓存,但这是可以做到的

CSS文件、脚本和图像等内容可以通过
标记跨域自由加载。哦,还有字体,只要你的字体服务器有正确的标题。是的,我知道。但由于我想要完全分离,我想知道从一个单独的服务器提供index.html是否常见?这个资源不是CSS、JavaScript或图像资源。所有后续ajax安全检查的参考域由主页的域决定,因此如果您从CDN加载主页,那么在CDN之外的访问将需要特殊的标题,这将变得奇怪和复杂。谢谢!那么,从静态服务器为所有客户机文件提供服务,这是一件常见的事情吗?或者我最好只从与API相同的服务器上提供index.html?那么使用CNAME呢?例如,api.mysite.com将是Sails服务器,而对mysite.com/index.html(或任何其他文件)的请求将由静态服务器提供服务?从CDN提供图像、脚本和样式表等文件非常常见。我不确定从CDN提供像余烬模板这样的服务有多普遍,但我确信已经做到了。实际上,任何可以缓存并需要快速交付的静态资产都是CDN存储的好选择。就CNAMEs而言,CORS非常具体——您需要指定加载资产的确切协议、域(包括子域)和端口。但是如果我确保静态CDN和API服务器都可以由同一个域访问,我甚至需要CORS吗?通常,您会希望为初始视图提供服务器(其中将包含加载余烬的
标记等),这样您就可以在页面上引导一些数据。如果您决定从CDN服务器站点索引,这很好,但是您需要在API服务器(即Sails)上启用CORS因为您将使用AJAX访问与加载初始视图的域不同的域上的端点。有关详细信息/示例,请参阅我回答中的第一个链接。