什么是跨域

跨域是一种浏览器同源安全策略,也即浏览器单方面限制脚本的跨域访问。很多人可能误认为资源跨域时无法请求,实质上请求是可以正常发起的(指通常情况下,部分浏览器存在部分特例),后端也可能正常进行了处理,只是在返回时被浏览器所拦截。

请求的url与当前页面不同即产生跨域
1.协议跨域 例如https站点访问http站点
2.主机跨域 例如http://a.com访问http://b.com
3.端口跨域 例如3000端口访问8080

jsonp

利用script标签的src属性进行跨域,需要配合后台,不能解决post方式

 const getJsonp = (url, callback) => {
    //声明window下的jsonp函数
    window.jsonp = function(data){
        //jsonp函数被执行将data转发到success函数
        success(data);
    }
    var src = '';
    //判断地址是否带其它参数决定callback怎么拼接
    if(url.IndexOf('?') != -1){
        src = url + '&callback=jsonp';
    }else{
        src = url + '?callback=jsonp';
    }
    //动态创建script标签
    var script = document.createElement('script');
    script.type = "text/javascript";
    script.src = src;
    document.head.appendChild(script);
}
getJsonp('a.com', (data) => {
    console.log('接收到数据啦' + data)
    })
// 后台返回的数据为'jsonp(真正的数据)'

posted @ 2017-04-05 20:28  wkm-wangZhe  阅读(152)  评论(0编辑  收藏  举报