前言:前两天PC端商城开发到最后阶段,准备放到测试服务器,发现post接口出错,想到是存在跨域,什么是跨域,以及跨域的解决方案。
同一协议下,同一域名。同一端口下的访问属于同源策略,除此之外都是跨域。跨域的解决方式有两种,一种是客户端解决,一种是服务端解决。
1、jsonp解决方案
jsonp的原理就是利用script标签的src属性动态加载,不受同源策略的影响.
var scrt = document.createElement('script');
scrt.src = 'http://www.baidu.com/a.json?callback=jsonStr';
document.body.appendChild(scrt);
var jsonStr = function (data){
alert(data);
}
仅支持get请求
2、通过CORS解决
CORS是什么 cross-origin-resource-sharing 跨域资源共享,它允许浏览器向跨源服务器发送http请求,克服了ajax同源请求资源的限制。浏览器发现ajax请求资源,就会自动添加头信息,服务端只需要添加相关响应头信息,即可实现ajax跨域请求。但是cors请求有兼容性 IE8 - ie9不兼容此此策略。浏览器先以options请求方式发送预请求,从而获知对跨域资源请求所支持的http方法。
3、node转发层搭建
慎重选择是否搭建中转层,意味着性能的,服务器压力,开销都会相应的增加。
4、nginx 反向代理
通过nginx解析url,判断到底应该转发到哪台服务器上。
写的不好的地方还望大家及时反馈与纠正,本着共同学习与进步宗旨不断前进!!!