方法一:jsonp函数
在HTML DOM中,Script标签是可以跨域访问服务器上的数据的.因此,可以指定script的src属性为跨域的url,基于script标签实现跨域.
script标签本身就可以访问其它域的资源,不受浏览器同源策略的限制,可以通过在页面动态创建script标签。var script = document.createElement('script'); script.src = "http://aa.xx.com/js/*.js"; document.body.appendChild(script);
服务端:
protected void retJSON(){ string callback = Request.QueryString["jsoncallback"]; string result = callback + "({\"name\":\"hofmann\",\"date\":\"2019-05-08\"})"; Response.Clear(); Response.Write(result); Response.End();}
$.ajax({ async: false, url: "http://192.168.0.5/APi/Js", type: "GET", dataType: 'jsonp', jsonp: 'jsoncallback', data: null, timeout: 5000, contentType: "application/json;utf-8", success: function (result) { alert(result.date); }, error: function (jqXHR, textStatus, errorThrown) { alert(textStatus); } });
页面二
这时候父页面就可以调用子页面的b函数,实现js跨域访问
方法三:后台代理方式
这种方式可以解决所有跨域问题,也就是将后台作为代理,每次对其它域的请求转交给本域的后台,本域的后台通过模拟http请求去访问其它域,再将返回的结果返回给前台,这样做的好处是,无论访问的是文档,还是js文件都可以实现跨域参考