开发中遇到ajax跨域问题怎么办?(同源策略问题)自己的见解

作为一个刚出道的小白,懂的并不是很多,也许这个问题已经在百度上有很多的解决方案,今天就把自己的理解写上去

正所谓开局一张图,其他全靠编。

开发中遇到ajax跨域问题怎么办?(同源策略问题)自己的见解
错误来源

啊哈   正如你所看到的,我们在http://localhost:9091的时候,需要去调用http://localhost:9092的东西,然后报错了

问题产生的原因:

当我们在使用Ajax的时候,通过Ajax技术去访问跨域的接口的时候,会出现一个同源问题(协议,IP,以及端口)

 

为啥呢?小编经后面了解到在使用Ajax在访问跨域资源的时候,会出现 “同源策略” 的问题, 所谓同源策略是指:协议、域名、端口一致, 很显然, 上述的情况就是端口不一样所造成的

开发中遇到ajax跨域问题怎么办?(同源策略问题)自己的见解
同源策略打比方解释

经查看JQueryAPI资料,发现

开发中遇到ajax跨域问题怎么办?(同源策略问题)自己的见解

Ajax里面有个type=“JSONP”,一直没有太仔细的看JQuery的api,这回仔细的瞅瞅

开发中遇到ajax跨域问题怎么办?(同源策略问题)自己的见解

开发中遇到ajax跨域问题怎么办?(同源策略问题)自己的见解

开发中遇到ajax跨域问题怎么办?(同源策略问题)自己的见解

看完以上的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,操作更方便哦