跨域
浏览器对于javascript的同源策略的限制。不同域名、端口、协议都为跨域。(例如:a.cn访问b.cn)
同源策略
请求的URL地址必须与浏览器上的URL地址处于同域上。也就是域名、端口、协议相同。
比如:我在本地上的域名是study.cn,请求另外一个域名一段数据
这时浏览器会报错:
这个就是同源策略的保护,如果浏览器对javascript没有同源策略的保护,那么一些重要的机密网站将会很危险
Jsonp
Jsonp全称:JSON with Padding,是为了解决跨域请求资源而产生的解决方案,是一种依靠开发人员创造出的一种非官方跨域数据交互协议。
Jsonp的产生
1.Ajax直接请求普通文件存在跨域无权限访问的问题,静态页面也一样。
2.拥有src属性的标签都可以跨域。例如<script><img><iframe>
3.为了便于客户端使用数据逐渐形成一种非传输协议,人们称之为Jsonp。该协议允许用户传递一个callback参数给服务端。
基于script标签实现跨域(利用<script>标签没有跨域限制"漏洞"来达到与第三方通讯)
1.服务端返回数据时会将这个callback参数(message)作为函数名来包裹住JSON数据,客户端就可以定制自己的函数来自动处理返回数据了。
远程的message.js文件是
2.让远程js知道它应该调用的本地函数叫什么名字,只要服务端提供的js脚本是动态生成的,这样前台只需要传一个callback参数过去告诉服务端,我需要XXX代码,于是服务端就会得到相应了.
网友评论