文档介绍:JS跨域原因及其解决方案产生跨域问题的原因跨域问题是浏览器同源策略限制,当前域名的JS只能读取同域下的窗口属性。跨域问题产生的场景当要在在页面中使用JS获取其他网站的数据时,就会产生跨域问题,比如在网站中使用ajax请求其他网站的天气、快递或者其他数据接口时以及hybridapp中请求数据,浏览器就会提示以下错误。这种场景下就要解决js的跨域问题。XMLHttpRequestcannotload'Access-Control-Allow-0rigin,'http://当前页的域名',子域名,主域名,端口号。比如https:///,其中https是协议名,主域名,端口号是80,当在在页面中从一个ur1请求数据时,如果这个url的协议名、子域名、主域名、端口号任意一个有一个不同,就会产生跨域问题。即使是在http://localhost:80/页面请求:80/ess-Control-Allow-Origin为指定可获取数据的域名jsonp的解决方式jsonHjsonp原理jsonp解决跨域问题的原理是,浏览器的script标签是不受同源策略限制(你可以在你的网页中设置script的src属性问cdn服务器中静态文件的路径)。那么就可以使用script标签从服务器获取数据,请求时添加一个参数为callbakc=?,?号时你要执行的回调方法。$.ajax({ur1:"",dataType:"jsonp",data:{params:""}}).done(function(data){//dosomething..})仅仅是客户端使用jsonp请求数据是不行的,因为jsonp的请求是放在script标签中的,和普通请求不同的地方在于,它请求到的是一段js代码,如果服务端返回了json字符串,那么浏览器就会报错。所以jsonp返回数据需要服务端做一些处理。服务端返回数据处理上面说了jsonp的原理是利用script标签来解决跨域,但是script标签是用来获取js代码的,那么我们怎么获取到请求的数据呢。这就需要服务端做一些判断,当参数中带有callback属性时,返回的type要为application/javascript,把数据作为callback的参数执行。下面是jsonp返回的数据的格式示例/**/typeofjQuery21307270454438403249_********** 38二二二'function'amp;amp;jQuery213072704544384 03249_14280 44213638({〃code":1,〃msg:ess