前段时间给朋友分析了下经常使用的jsonp的跨域原理,跨域的方式有不少种,这里简单记录一种jsonp,阐述一下分析思想,分析过程,找到解决问题的方式。java
1.JavaScript怎么跨域jquery
2.为何会出现跨域问题ajax
3.经常使用的跨域插件是什么json
4.为何<script src=""></script>不会产生跨域问题跨域
5.java后台跨域的处理是什么原理浏览器
跨域方式?dom
(1) document.domain+iframe的设置函数
(2) 利用iframe和location.hashjsonp
(3)动态建立scripturl
第三种也是咱们这里主要分析的方式。
在咱们经常使用的跨域解决方案就是,使用jquery 的ajax请求,url带上一个callback=? 这样就完成了跨域请求。具体是怎么实现的?
作过跨域请求的人,都知道callback会变成一个随机函数名,在服务端返回数据的时候,会将数据以JavaScript函数调用的方式包裹,列如 jquery_33454523443543('我是数据参数')
ok到这里咱们内心应该有点疑惑,这难道是要在客户端执行?
为何<script src=""></script>不会产生跨域问题
既然<script >标签不会产生跨域问题,那么咱们是否能够在这上面作些文章?
分析到这里咱们应该有所明悟,所谓的跨域就是使用JavaScript的标签特性,进行二次封装。获得后台的数据(生产的JavaScript函数)在浏览器执行,最终获得的效果就表现成跨域。
jQuery的callback函数应该也懂了?
服务端为什么要使用匿名函数包裹数据?
分析就记录到这里.....