1. 域名
域:由协议,子域名,主域名,端口,请求的资源文件组成
2. 跨域
跨域: 协议,子域名,主域名,端口不同时候就叫跨域
当协议,子域名,主域名,端口号,任意一个不同时,就算作不同的域。
不同域之间请求资源就算做跨域。
Javascript出于安全性的考虑,不允许跨域调用其他页面的对象。简单理解就是因为Javascript同源策略的限制,a.com域名下的js无法操作b.com域名下的对象。
同源策略:javascript出于同源策略,不允许从一个域访问另一个域的对象。
3. 解决跨域
3.1 jsonp跨域
Jsonp(JSON with Padding) 是 json 的一种”使用模式”,可以让网页从别的域名(网站)那获取资料,即跨域读取数据。
$.ajax({
url:"http://192.168.4.18:8000/ad",
method:"get",
dataType:"jsonp",
success:res=>{
console.log(res)
}
})
3.2 script标签
原理: script不受同源策略的限制
var script = document.createElement("script");
script.src = "http://192.168.4.18:7000/ad?&callback=handleResponse";
document.body.prepend(script);
function handleResponse(res) {
// 对response数据进行操作代码
console.log(res)
}
3.3 服务器端跨域
koa.js
koa2-cors//中间
const cors = require("koa2-cors");
app.use(cors({
origin:"*"
}));
//所有其他的域,都可以访问本域
const koa = require("koa");
const app = new koa();
app.use(async ctx=>{
ctx.set('Access-Control-Allow-Origin','*')
ctx.body = {
name:"cheng"
}
})
app.listen(5000)