1、使用jsonp跨域
原生实现
<script > //点击事件 document.getElementById("btn").onclick = function(){ //生成一个script元素 var script = document.createElement("script"); //给srcipt的src赋值 传参并指定回调执行函数为take script.src = "http://localhost:8080/kuayu0?callback=take"; //将生成的script追加到head中 document.head.appendChild(script); }
//回调执行函数 function take(resp){ console.log(resp); } </script>
服务端的设置
运行结果:
使用 jquery ajax
//点击事件 document.getElementById("btn").onclick = function() { $.ajax({ url: 'http://localhost:8080/kuayu0', type: 'get', dataType: 'jsonp', // 请求方式为jsonp jsonpCallback: "take", // 自定义回调函数名 data: {} }); } function take(resp) { console.log(resp); } </script>
2、跨域资源共享(CORS)
在服务端设置头部信息。
请求
//点击事件 document.getElementById("btn").onclick = function() { fetch("http://localhost:8080/kuayu1",{ method:"get" }).then(function(resp){ resp.text().then(function(data){ console.log(data); }); }); }
结果:
2、手动解除浏览器跨域的限制
要是你问,我要是调用别人的接口得到的数据呢?
我还有一个最强硬的方法(将浏览器的同源策略给关闭了)这里以谷歌浏览器为示例。
右键,创建快捷方式
右键,点击属性
后面加上 --disable-web-security --user-data-dir=e:xxx 然后点击确定
然后打开这个浏览器,你就会发现可以跨域了。(用完要记得关闭啊,这是很不安全的,访问期间它会偷偷的下载东西放在e盘的xxx文件夹中,存在路径也是可以设置的哦)