1. http://www/baidu.com
    2. https://www.baidu.com
    3. 不在一个域 协议不同
    1. html 超文本标记文本
    2. http//47.108.197.28:3000
    3. http//47.108.197.28:4000
    4. 不在一个域端口不一样
    1. htttp://aaa.baidu.com
    2. htttp://bbb.baidu.com 子域名不一样
    3. http:music.bai.du.com
    1. https://music:163.com/my
    2. https://music:163.com/detail

    如何实现跨域

    1. 服务器上跨域
    2. ctx.set("Access-Control-Allow-Origin","*")这样就可以实现跨域
    1. 二客户端跨域
    2. 1-1jsonp
    3. Jsonp(JSON with Padding) json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。
    1. //dataType改为jsonp就好了
    2. $.ajax({
    3. url:"http://localhost:8090/",
    4. method:"get",
    5. dataType:"jsonp",
    6. success:res=>{
    7. console.log(res);
    8. }
    9. })

    1-2script

    1. script不受同源策略的限制
    2. var script = document.createElement("script");
    3. script.src = "http://localhost:8090/ad?&callback=handleResponse";
    4. document.body.prepend(script);
    5. function handleResponse(res) {
    6. // 对response数据进行操作代码
    7. console.log(res)
    8. }

    l例子

    1. const koa = require("koa");
    2. const app = new koa();
    3. app.use(async ctx=>{
    4. let callbackName = ctx.query.callback || 'callback'
    5. // 返回jsonp
    6. var obj ={
    7. name:"xujiajia",
    8. age:20
    9. }
    10. ctx.body = callbackName + `(${JSON.stringify(obj)})`
    11. })
    12. app.listen(8090);
    1. /* jquery-ajax jsonp*/
    2. $.ajax({
    3. url:"http://192.168.4.18:7000/ad",
    4. method:"get",
    5. dataType:"jsonp",
    6. success:res=>{
    7. console.log(res)
    8. }
    9. })