`

避免跨域的CDN部署方案

阅读更多

我们的一个项目采用动静分离的部署方式,服务接口在自己的服务器上,静态资源保存在OSS,通过CDN访问。不过这样有时会有跨域问题。本文总结解决的办法
<!--more-->

原来的做法

原本的做法,服务接口部署在自己的服务器上,通过域名api.xxx.com访问,不走CDN

静态文件,包括html,css,js,图片等,部署在OSS上,通过域名s.xxx.com访问,经过CDN加速

这种架构在性能上表现很不错,但是服务接口是通过ajax调用的,通过设置Access-Control-Allow-Origin允许跨域请求,但是这需要跨域

而实践发现,在某些移动端的浏览器里,跨域访问失败。比如三星S3,某些vivo手机等。因为这涉及到安卓版本,手机型号,浏览器版本等,很难彻底解决

所以最后就考虑能否通过改进部署方式,来彻底避免跨域请求

新的方案

希望实现2个目的:

1、静态资源和服务接口需要在同一个域名下

2、域名要通过CDN加速,保证性能

现在的做法,是把静态资源和服务接口都部署到自己的服务器上,把自己服务器作为CDN的源站

然后在CDN上配置规则,对于/svc开头的url,不设置缓存(即确保这种请求回源)即可

部署图

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics