一、由于ajax的同源策略,故发送ajax请求不能实现跨域访问。后来开发者发现了另一途径可以实现跨域访问功能。它就是jsonp。
二、jsonp:主要依靠src身上自带的跨域功能,同时必须前后端同时支持才能实现。
三、实现步骤:
1.定义全局回调函数。
function callback(data) {
console.log(data);});
2.动态创建script标签,指定请求地址,并在地址后面加上?和参数。
var oScript = document.createElement('script');
oScript.src = 'http://127.0.0.1/news.php?cb=callback';
注:后台操作,对于PHP:
$cb = $_GET['cb']; echo $cb.'('.json_encode($data).')'; //其实就是执行了回调函数
四、扩展
CORS跨域:它是w3c的标准跨域,即‘跨域资源共享’。它发送的还是XHR请求,克服了ajax只能同源的局限。
注:cors跨域cookie不会一起发送,必须另行设置
实现方式:在服务器端指定Access-Control-Allow-Origin头信息。*代表允许所有地址发来的请求。
cors和jsonp的区别:
1>jsonp支持所有的浏览器,cors有浏览器兼容问题。
2>jsonp只支持get请求,CORS支持所有类型的HTTP请求。
<~~觉得实用请点赞,让爱继续传递!~~>