跨域:只要协议、域名、端口有任何一个不同,都被当作是不同的域。
因为存在不同的域,在js中,我们直接用XMLHttpRequest
请求不同域上的数据时,是不可以的。但是,在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的。
jsonp:json+padding,可理解为把JSON填充到一个盒子里。
像这样:callbackFunction(["customername1","customername2"]);
看菜鸟教程中的例子,JSONP由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数,而数据就是传入回调函数中的JSON数据。js文件载入成功后会执行我们在url参数中指定的函数,并且会把我们需要的json数据作为参数传入。
但是,使用jsonp跨越,只支持GET请求而不支持POST等其它类型的HTTP请求;只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行js调用的问题。
其他跨越方法还有:
CORS
通过修改document.domain来跨子域
使用window.name来进行跨域
使用HTML5中新引进的window.postMessage
方法来跨域传送数据