http://www/baidu.com
https://www.baidu.com
不在一个域 协议不同
html 超文本标记文本
http//47.108.197.28:3000
http//47.108.197.28:4000
不在一个域端口不一样
htttp://aaa.baidu.com
htttp://bbb.baidu.com 子域名不一样
http:music.bai.du.com
https://music:163.com/my
https://music:163.com/detail
如何实现跨域
一 服务器上跨域
ctx.set("Access-Control-Allow-Origin","*")这样就可以实现跨域
二客户端跨域
1-1jsonp,
Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。
//dataType改为jsonp就好了
$.ajax({
url:"http://localhost:8090/",
method:"get",
dataType:"jsonp",
success:res=>{
console.log(res);
}
})
1-2script
script不受同源策略的限制
var script = document.createElement("script");
script.src = "http://localhost:8090/ad?&callback=handleResponse";
document.body.prepend(script);
function handleResponse(res) {
// 对response数据进行操作代码
console.log(res)
}
l例子
const koa = require("koa");
const app = new koa();
app.use(async ctx=>{
let callbackName = ctx.query.callback || 'callback'
// 返回jsonp
var obj ={
name:"xujiajia",
age:20
}
ctx.body = callbackName + `(${JSON.stringify(obj)})`
})
app.listen(8090);
/* jquery-ajax jsonp*/
$.ajax({
url:"http://192.168.4.18:7000/ad",
method:"get",
dataType:"jsonp",
success:res=>{
console.log(res)
}
})