CORS
在header(response.setHeader)中写入Access-Control-Allow-Origin:url
若是想允许多个url则使用response.headers[referer]
JSONP
由于某些浏览器不支持CORS,于是开发者需要使用创造一个script然请求js,然后js会返回一个回调函数,然后这个回调函数里面饱含着开发者需要的数据,回调函数的名字可以是随机的,以callback的形式传递给后台
优点:1.支持跨域 2.兼容ie
缺点:1. 由于是script标签读不到像ajax那么精确的状态,只能知道是成功还是失败
2. 由于是script标签,所以只能发get请求,不支持post
function jsonp(url) {
return new Promise((resolve, reject) => {
const random = "frankJSONPCallbackName" + Math.random();
window[random] = data => {
resolve(data);
};
const script = document.createElement("script");
script.src = `${url}?callback=${random}`;
script.onload = () => {
script.remove();
};
script.onerror = () => {
reject();
};
document.body.appendChild(script);
});
}
jsonp("http://qq.com:8888/friends.js").then(data => {
console.log(data);
});