同源策略
处于安全考虑,浏览器约定俗成执行这一规定:
- 协议相同
- 端口相同
- 域名相同
跨域请求的概念
JSON
JSON的优点:
1、基于纯文本,跨平台传递极其简单;
2、Javascript原生支持,后台语言几乎全部支持;
3、轻量级数据格式,占用字符数量极少,特别适合互联网传递;
4、可读性较强,虽然比不上XML那么一目了然,但在合理的依次缩进之后还是很容易识别的;
5、容易编写和解析,当然前提是你要知道数据结构;
JSONP的诞生
- 首先,因为ajax无法跨域,然后开发者就有所思考
- 其次,开发者发现,script标签的src属性是可以跨域的把跨域服务器写成 调用本地的函数 ,回调数据回来不就好了?
- json刚好被js支持(object)调用跨域服务器上动态生成的js格式文件(不管是什么类型的地址,最终生成的返回值都是一段js代码)
- 这种获取远程数据的方式看起来非常像ajax,但其实并不一样
- 便于客户端使用数据,逐渐形成了一种非正式传输协议,人们把它称作JSONP。
- 传递一个callback参数给跨域服务端,然后跨域服务端返回数据时会将这个callback参数作为函数名来包裹住json数据即可。
简言之:
json不支持跨域,而js可以跨域,因此在服务器端用客户端提供的js函数名将json数据封装起来,再将函数提供给客户端调用,从而获得json数据。