避免跨域的CDN部署方案
2016-02-06 22:37
429 查看
我们的一个项目采用动静分离的部署方式,服务接口在自己的服务器上,静态资源保存在OSS,通过CDN访问。不过这样有时会有跨域问题。本文总结解决的办法
静态文件,包括html,css,js,图片等,部署在OSS上,通过域名s.xxx.com访问,经过CDN加速
这种架构在性能上表现很不错,但是服务接口是通过ajax调用的,通过设置Access-Control-Allow-Origin允许跨域请求,但是这需要跨域
而实践发现,在某些移动端的浏览器里,跨域访问失败。比如三星S3,某些vivo手机等。因为这涉及到安卓版本,手机型号,浏览器版本等,很难彻底解决
所以最后就考虑能否通过改进部署方式,来彻底避免跨域请求
1、静态资源和服务接口需要在同一个域名下
2、域名要通过CDN加速,保证性能
现在的做法,是把静态资源和服务接口都部署到自己的服务器上,把自己服务器作为CDN的源站
然后在CDN上配置规则,对于/svc开头的url,不设置缓存(即确保这种请求回源)即可
原来的做法
原本的做法,服务接口部署在自己的服务器上,通过域名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,不设置缓存(即确保这种请求回源)即可
![](http://pic.kyfxbl.com/cdn-topo.jpg)
相关文章推荐
- 防刷票方案
- swift学习笔记之-枚举
- mysql获取更新日期为前一天的数据
- 抓取第三方网站数据
- axure笔记--内部框架交互链接
- 查看静态链接库内容
- 搜索(广度优先搜索)BFS 2
- 用rsync同步文件夹
- 谜题(Puzzle, ACM/ICPC World Finals 1993, UVa227)(难死了!!)
- BestCoder #71 KK's Number题解
- 在O(logn)时间内找到数组中离每个数最近而又比它大的数的下标
- nyoj--635--Oh, my goddess(dfs)
- javascript几个知识点
- 第十五天
- nyoj--635--Oh, my goddess(dfs)
- [BZOJ2527][Poi2011]Meteors
- win10 下runtime error 解决办法
- 在 java web 中调用存储过程
- 记CentOS 7环境下安装g++
- CentOS 6 安装在虚拟机上 eth0网卡无法工作的解决