我们的一个项目采用动静分离的部署方式,服务接口在自己的服务器上,静态资源保存在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>
分享到:
相关推荐
为了节约成本,很多时候一台server 的nginx可能要部署多个前端的情况,本实例是在docker环境下部署两个前端,同时处理前端调用后端跨域问题,本示例为阿里云centos7 系统docker20.10.6环境下nginx1.19.5版本 ...
JQuery跨域访问解决方案 JQuery
跨域访问解决方案,关于跨域访问cookie的资料
docker部署nginx,挂载多个前端部署目录以及跨域问题解决方案(1).zip
js跨域访问解决方案总结,不同域名下cookie相互操作
个人用的比较好的解决办法,ASP.NET跨域SSO解决方案
ssm跨域问题解决方案
signalR跨域及解决方案 Access-Control-Allow-Origin' header is present之 为什么会跨域及解决方案
主要介绍了Vue中跨域以及打包部署到nginx跨域设置方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
JS跨域访问解决方案总结! JS跨域访问解决方案总结 JS跨域访问解决方案总结
Javascript跨域访问解决方案 个人在网上搜集的资料,用于传输信息,不提倡下载
js跨域解决方案
使用docker部署nginx前后端解决跨域问题
ajax跨域请求解决方案。有详细配置方案,轻松解决ajax请求数据是的跨域问题。
js跨域问题解决方案.
JS跨域访问解决方案总结.pdf
解决ajax跨域Java解决方案,通过代理实现ajax跨域操作,避免拒绝访问等跨域操作问题
Spring,跨域 ,解决方案,官方, demo,cros