浏览器有一个同源策略,协议,域名和端口,必须一样。
为什么浏览器默认不支持跨域。
实现跨域的9种手段:
一、jsonp
jsonp就是创建一个script标签,
最普通的调用:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="">
</head>
<body>
<!--https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=a&cb=show-->
<!--返回结果:-->
<!--show({q:"a",p:false,s:["爱奇艺","apex","阿里云","安居客","阿里巴巴","apex英雄","阿里巴巴批发网","爱思助手","安卓模拟器"]});-->
<script>
function show(data) {
console.log(data);
}
</script>
<script src="https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=a&cb=show"></script>
</body>
</html>
自己写一个jsonp方法:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
function jsonp({url, params, cb}) {
return new Promise((resolve, reject) => {
let script = document.createElement('script');
// 声明全局的函数
window[cb] = function (data) {
resolve(data);
}
params = {...params, cb: cb} //=> wd=b&cb=show
let arrs = [];
for (let key in params) {
arr