`

避免跨域的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>
分享到:
评论

相关推荐

    前端开源库-cdnex

    6. **跨域支持**:考虑到跨域资源共享(CORS)的问题,cdnex可能会提供相应的解决方案,以避免因资源加载引发的跨域限制。 7. **日志和监控**:为了便于问题排查和性能分析,cdnex可能提供日志记录和性能监控功能。...

    微前端落地指南

    - 探讨实际项目中遇到的问题及解决方案,如跨域问题、状态管理等。 7. **未来展望** - 微前端技术的发展趋势,如Web Components的普及可能带来的影响。 - 新兴框架对微前端的支持,如Vue 3.0的Teleport特性。 -...

    phpThumb(缩略图类).7z

    11. **跨域支持**:通过设置HTTP头,允许从其他域名访问生成的缩略图,便于CDN部署。 12. **安全特性**:防止恶意参数,限制非法访问,例如限制源图片路径,避免文件遍历攻击。 在实际使用`phpThumb`时,你需要在...

    msvod_v9魅思视频系统源码,带试看功能,最近刚买的

    7. `crossdomain.xml`:跨域策略文件,用于允许来自不同域名的请求,这对于视频流媒体服务可能很重要,因为内容可能从不同的服务器或CDN加载。 8. `api`:这个目录可能包含API接口的代码,用于与后端服务器进行数据...

    vue cli构建的项目中请求代理与项目打包问题

    此外,Vue CLI还支持动态公共路径(publicPath),这在部署到CDN或者子路径时非常有用。例如,如果你的应用部署在`http://your-domain.com/subfolder`,则设置`publicPath`为`'/subfolder/'`: ```javascript ...

    Ueditor编辑器java版(Jsp)

    - 分离静态资源:将Ueditor的JavaScript和CSS文件部署到CDN,减少服务器压力,加快用户访问速度。 7. **实际应用场景** - 内容管理系统:用于文章编辑和发布,方便非技术背景的用户编辑网页内容。 - 论坛和评论...

    Spring启动

    设置代理服务器,将API请求代理到Spring Boot应用的地址,避免跨域问题。 4. **状态管理**:对于React或Vue.js,可以使用Redux或Vuex等状态管理库来处理与后端交互的数据。 5. **安全控制**:Spring Security提供...

    苹果cms视频采集资源下载

    综上所述,苹果CMS作为一个全面的视频网站解决方案,涉及的内容包括但不限于网站架构、数据库管理、安全防护、用户体验、版权法务等多个方面。在搭建和运营过程中,需要综合运用各种技术和策略,确保网站的稳定、...

    maoneng_v2

    14. **跨域策略和解决方案**:了解同源策略及其对Ajax请求的影响,以及CORS、JSONP等跨域解决方案。 15. **安全**:防止XSS和CSRF攻击,理解HTTP头部如Content-Security-Policy的作用。 为了深入理解“maoneng_v2...

    Android 使用PDF.js浏览pdf的方法示例

    为了避免这种情况,可以考虑将其部署到服务器或使用CDN服务。 ### 方式三:自定义预览界面 1. 创建一个名为`index.html`的预览界面,包含必要的CSS和JavaScript引用,如PDF.js库。在这个例子中,我们使用了cdnjs...

    ecommerce

    - **CDN分发**:通过内容分发网络,将静态资源部署在全球各地的服务器上,提高加载速度。 - **代码压缩与合并**:减少HTTP请求,降低传输体积,提高加载速度。 4. JavaScript 安全考虑 - **XSS攻击防御**:防止...

    面试题总结.docx

    前端优化方案包括但不限于代码压缩、图片优化、懒加载、缓存策略、CDN加速等。这些技术的应用有助于提高网站的加载速度和用户体验。 ### 三十四、Diff算法 Diff算法是React中的一个重要概念,用于比较新旧虚拟DOM...

    模块联合:提供了有关如何使用模块联合功能的说明

    它允许不同应用之间共享代码,从而实现更高效、灵活的开发和部署。这个特性是Webpack 5引入的新功能,极大地改进了大型项目中的代码分割和动态导入策略。 在JavaScript世界中,传统的代码共享方式通常是通过npm包或...

    一些前端面试题.pdf

    - **CDN**:使用内容分发网络来提高资源的加载速度。 - **代码拆分**:使用webpack等工具按需加载代码。 ### Progressive Web App(PWA) PWA是一种混合了传统网站和移动应用功能的应用程序。它利用现代Web技术为...

Global site tag (gtag.js) - Google Analytics