zoukankan      html  css  js  c++  java
  • 小刀jsonp跨域

    经常说到jsonp,今天理一理。

    同源策略

    同协议,同域名,同端口;

    会限制你的ajax,iframe操作,窗口信息的传递,无法获取跨域的cookie、localStorage、indexDB等;

    jsonp

    原理很简单,html中大部分的src不受同源策略限制,包括link、img、css(background-image等),运用script中src自带的跨域属性请求后台接口

    function addScript(url){ 
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = url;
        document.body.appendChild(script);
    }

    //回调句柄
    function handle(data){
      console.log(data);
    }
    //假设请求接口,约定callback字段
    addScript(“http://******/getdata?callback=handle”);

      node代码:

    /* GET jsonp listing. */
    router.get('/', function (req, res, next) {
       //模拟数据 var data = { mess: 'hi' };
       //获取回调函数名 var callback = req.query.callback; if (callback) { data = JSON.stringify(data);
         //返回为字符串 res.send(`${callback}(${data})`); } else { res.send('nocallbak'); } });

      回调结果:并没有JSON.parse

    注意事项:

      jsonp有很多限制值得注意,只能发送GET类型的请求,无法监测请求是否成功,请求一旦完成立马触发函数,控制的手段比较有限,但好在兼容性不错所有浏览器都支持,不用多余的配置。

  • 相关阅读:
    bzoj4849: [Neerc2016]Mole Tunnels
    bzoj 4069~4071 APIO2015
    bzoj 4885: [Lydsy2017年5月月赛]长方体
    bzoj4891: [Tjoi2017]龙舟
    bzoj4892: [Tjoi2017]dna
    bzoj 3159: 决战
    bzoj3672: [Noi2014]购票
    bzoj4738: 汽水
    bzoj 4737: 组合数问题
    bzoj 4872: [Shoi2017]分手是祝愿
  • 原文地址:https://www.cnblogs.com/dansingal/p/8244026.html
Copyright © 2011-2022 走看看