zoukankan      html  css  js  c++  java
  • 跨域访问解决方案:JSONP

    关于什么是跨域请求,可以参见我之前的博文:http://www.cnblogs.com/LiuChunfu/p/5240145.html

    上述博文最后有提到解决方案,一直说补充,但是工作忙忘了,直到朋友问起这个问题,协助解决后,才想起来这么一回事。

    通常来说跨域请求可以有2种解决方案,一个是利用同域的后台服务器请求后,在转发,二是利用JSONP.

    今天只谈谈JSONP,JSONP其中的Padding恰好是包裹的意思。JSONP就是包裹JSON的意思哦,就是在JSON外面包裹一层的意思。

    一、前端请求

    JSONP类型的请求:

    <script type="text/javascript">
                $.ajax({
                    url:"http://localhost:8080/JsonTest/servlet/MyJson?callback=run",
                    dataType:"jsonp",//关键部分1:指定返回类型为jsonp
                    jsonpCallback:"run",//关键部分2:指定回调的方法是run
                    success:function(data){
                        console.info(data.name);
                        alert(data.name);
                    }
                });
            </script>

    二、后台响应

    String callback=request.getParameter("callback");
    String json="{'name':'LCF'}";
    response.getWriter().write(callback+"("+json+")");

    这样在前台接收到的被包裹的JSON如下所示:

    run({'name':'LCF'})

    结合JSONP请求中的关键部分2,明确了回调的方式是run,可以理解为ajax自动的去找到了run包裹的内容。将其中的内容转为JSON对象。

  • 相关阅读:
    cmd中编译java
    java出错
    去掉开始菜单中新装程序的红色标记【Windows】
    Windows安装java
    看视频缓冲好还一卡一卡【解决】
    python图像卷积
    电脑硬盘、内存
    python 查询Neo4j多节点的多层关系
    python 快速排序实现
    python 二分法实现
  • 原文地址:https://www.cnblogs.com/LiuChunfu/p/5314904.html
Copyright © 2011-2022 走看看