http://www/baidu.comhttps://www.baidu.com不在一个域 协议不同
html 超文本标记文本http//47.108.197.28:3000http//47.108.197.28:4000不在一个域端口不一样
htttp://aaa.baidu.comhtttp://bbb.baidu.com 子域名不一样http:music.bai.du.com
https://music:163.com/myhttps://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'// 返回jsonpvar 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)}})
