跨域 jsonp

作者: squidbrother | 来源:发表于2019-01-17 17:35 被阅读64次

    //简述

    [定义]

    1. 基于浏览器的安全考虑,由于同源策略的限制,不同域名、不同端口、不同协议的对象不能互相调用。

    (其实浏览器成功发送请求并拿回了数据 只是浏览器的同源策略 禁止了获取 )

    2.App请求接口类似于C/S不存在跨域问题。

    [表现:]

    同源策略限制了一下行为:

    1.Cookie、LocalStorage 和 IndexDB 无法读取

    2.DOM 和 JS 对象无法获取

    3.Ajax请求发送不出去

    //前端

    //传递参数

    var vin='lgbh12e08fy367896';

    //自定义的jsonp回调函数

    window.testCallBack = function(data){

    //处理回调

    }

    $("#getcarinfo").click(function(){

    $.ajax({

    type: "get",

    async: false,

    url: "http://www.runoob.com/try/ajax/jsonp.php",  //示例demo的PHP环境接口

    //可以带参数传到后台

    //url: "http://wenhao2018.hello2game.com/game/getDailei?bundleid=id.id.id&companycode=doctordai",

    data: { vin: vin },

    dataType: "jsonp",

    jsonp: "jsoncallback", //传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)

    //自定义回调

    //jsonpCallback: "testCallBack", //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名

    success: function (json) { //在此之前若没有定义回调函数success_jsonpCallback2则执行下面的代码

    alert(json[0]);

    },

    error: function () {

    alert('fail');

    }

    });

    });

    //后端

    <?php

    header('Content-type: application/json');

    //获取回调函数名

    $jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']);

    //json数据

    $json_data = '["customername1","customername2"]';

    //输出jsonp格式的数据

    echo $jsoncallback . "(" . $json_data . ")";

    ?>

    相关文章

      网友评论

        本文标题:跨域 jsonp

        本文链接:https://www.haomeiwen.com/subject/zrzidqtx.html