跨域请求的解决方案
首先我们来想一想 1.跨域是什么呢?为何要跨域? 2.浏览器的同源策略又是什么? 3.跨域的原理又是什么呢? 4.解决跨域有哪些方法? 当两个域具有相同的协议(如http), 相同的端口(如80),相同的host(如www.google.com),则认为它们是相同的域(协议,域名,端口都必须相同),否则就是跨域,如图所示: 同源策略:比如:我在本地上的域名是abc.cn,请求另外一个域名的一段数据,这个时候在浏览器上会报错,这个就是同源策略的保护。如果浏览器对javascript没有同源策略的保护,那么一些重要的机密网站将会很危险 限制跨域访问作用 限制跨域资源访问的作用可从服务器和客户端两个方面进行分析: 1、对于服务器,当收到一个请求时,会检查该请求来源,如果来源的客户端页面自己无法识别,而且服务器的数据又是比较敏感的,则可能做出限制或者拒绝访问(例如,黑客对服务器的攻击)。 2、对于客户端,浏览器的同源策略可限制对跨域资源的访问,若其与服务器的域不相同,则浏览器可能进行限制甚至拒绝访问(例如,黑客通过让你访问他的服务器数据来攻击你的客户端页面)。 跨域访问失败时,实际上浏览器发送请求成功,浏览器也接收到了响应,但是它会限制xmlhttprequest接受响应并在js控制台报错。 跨域解决方案 1、 通过jsonp跨域 2、 document.domain + iframe跨域