在前端中ajax时无法实现跨域的
一个域名下的ajax请求无法通过正常的ajax去获取其他站点的资源,但是请求是会被发送到服务器的,可以通过抓包看到,而且数据也是正常的被返回的,但是ajax拿不到返回对象,这是服务器的"同源策略做的限制"
那么如何实现跨域请求呢?jsonp 或cros,jsonp 是通过前端的javascript标签中src的开放策略去实现的,cros 因该是通过服务器的响应头去做的,没有仔细去了解cros,本文档只讲jsonp
javascript可以去加载其他站点的js,那么在站点中定义个一个方法,并且传入一个参数,那么只要某一站点使用被定义的js方法,传递参数到该方法中那么就可以实现跨域了
服务器接口 请求 xxx.com 接口返回 Hello({"user":"xxx"})
那么某站点只要实现了Hello这个方法,那么在实现方法后通过javascript 去加载这xxx.com接口时就会执行这个接口的内容,自然Hello这个方法被调用,那么数据{"user":"xxx"}将会被传递到方法实现中,对参数进行处理
站点http://xxx.com
request http://xxx.com
response Hello({"user":"xxx"})
站点http://jsonpxxx.com
......
<scripy>
function Hello(data){
拿到数据
}
<script>
<script src="http://xxx.com" ></script> 通过xxx站点的方法调用Hello方法
......