扫码关注公众号
跨域解决方案分为哪些
跨域的方法很多,网上案例很多常见的大概有9种,分别是(1)jsonp跨域(2)document.domain+iframe(3)window.name+iframe(4)location.hash+ifram(5)跨域资源共享(CORS)(6)WebSocket协议跨域(7)HTML5的postMessage跨域(8)nginx代理跨域(9)nodejs中间件代理跨域或者也可以这么分类对最主要的AJAX跨域来说(也就是平常调接口时):(1)(后端)服务器配置CORS(跨域资源共享)(2)(后端)node.js或nginx,反向代理,把跨域改造成同域(3)(前端)将JSON升级成JSONP,在JSON的基础上,利用<script>标签可以跨域的特性,加上头设置(4)对iframe跨域来说:H5提供了postMessage()的方法,可以在父子页面进行通信(加分项)在日常工作中,原生js我们使用最多的还是jsonp和CORS两种
JSONP优缺点
优点:兼容性好,在很古老的浏览器中也可以用,简单易用,支持浏览器与服务器双向通信。缺点:只支持GET请求,且只支持跨域HTTP请求这种情况(不支持HTTPS)
为什么会有跨域这个说法呢?
因为同源策略!浏览器安全是来自于同源策略。什么是同源策略呢?我们知道在网络中安全非常重要,不然你的密码,账号,重要数据都会被别人窃取,别人可以在网上获取到这些数据,模仿成你,骗过浏览器,为所欲为,这样的情况是不允许发生的。于是就有了同源策略一说。规定如下:(1)、协议相同(2)、域名相同(3)、端口相同同源:协议域名端口号全部相同,只要有一个不相同就是非同源策略,不同源就会造成跨域。
什么是JSONP
JSONP是JSONwithPadding的略称,JSONP为民间提出的一种跨域解决方案,通过客户端的script标签发出的请求方式。我们来简单概括他的优缺点:因为出生早它兼容性比较好,缺点只会get不会post相当于只会拿别人的数据不会给别人数据