开发中遇到ajax跨域问题怎么办?(同源策略问题)自己的见解
作为一个刚出道的小白,懂的并不是很多,也许这个问题已经在百度上有很多的解决方案,今天就把自己的理解写上去
正所谓开局一张图,其他全靠编。
啊哈 正如你所看到的,我们在http://localhost:9091的时候,需要去调用http://localhost:9092的东西,然后报错了
问题产生的原因:
当我们在使用Ajax的时候,通过Ajax技术去访问跨域的接口的时候,会出现一个同源问题(协议,IP,以及端口)
为啥呢?小编经后面了解到在使用Ajax在访问跨域资源的时候,会出现 “同源策略” 的问题, 所谓同源策略是指:协议、域名、端口一致, 很显然, 上述的情况就是端口不一样所造成的
经查看JQueryAPI资料,发现
Ajax里面有个type=“JSONP”,一直没有太仔细的看JQuery的api,这回仔细的瞅瞅
看完以上的API作何感想呢?是不是还是处于蒙圈的状态,其实兜兜转转简单一点好。就是在使用Ajax访问的时候,加上dataType:‘jsonp’ , jsonpCallback作为回调函数名,可以接收你返回的数据。
解决办法我具体提供了以下两种方案
问题的解决
1.用自己的手段来解决(最老的方式--不知道会不会出问题)
(1)采用他中间的一个漏洞,那就是src, 后面的callback作为回调参数调用
客户端:<script src="这个访问的路径是没有限制的?callback=deal">
服务端(接收传输过来的callback,然后将其返回到前端去,当然返回到前端的是一个方法return callback+"(data为json格式 的)")
2.使用ajax本身来解决
2.1.表面上看来我们采用的ajax方式,实际上我们改变了客户端和服务端交互的本质(加上dataType:jsonp格式)
2.2因为以前Ajax的本质是XMLHttpRequest
2.3加上之后的本质变成了<script>的方式
JsonCallback: 'call'--->回调函数,接收数据,传输到前端的方法接收。
最后加一句,这个只是个人的见解,有不同见解的欢迎在下面留言评论
最后的最后双手附上JQuery1.8的API
链接: https://pan.baidu.com/s/1XnoDzRomLUo7f0ES4Bbu5w 提取码: f9dg 复制这段内容后打开百度网盘手机App,操作更方便哦