同源策略
什么是同源策略?
就是服务器有个要求,要求当前页面和要请求的资源,必须得在同一个源内
什么是同源?
同协议,同域名,同端口 这三个都必须相同才叫做同源
如果不同源,服务器将会阻止这次请求,这个问题就叫做跨域!
如何解决跨域
使用jsonp发送请求
什么是jsonp
就是利用html标签可以跨域的特点,解决跨域问题,用script标签,引入外部资源,实现跨域请求
<script src = "./jsonp.php"></script>
这里虽然引入的是以.php为后缀的文件,但是因为script标签会将里面引入的任意文件都当作JS代码来解析,所以我们只要在引入的文件里输出正确的JS代码就可以成功请求到里面的内容。
jsonp代码的封装
function jsonp(url,success,data){
data = data || {};
let str = "";
for(var key in data){
str += `${key}=${data[key]}&`;
}
let t = new Date().getTime();
str = str + "__jst="+t;
var script = document.createElement("script");
script.src = url + "?" + str;
document.body.appendChild(script);
window[data[data.fieldName]] = function(res){
success(res);
}
}