跨域JSONP使用

作者: 离别刀 | 来源:发表于2018-06-07 09:38 被阅读0次

JSONP是为解决跨域而生,说起跨域先理解一下同源,只有当域名、端口、协议一样的情况下才是同源,其他的都是不同源,当不同源发出的ajax请求就是跨域,这个时候会被浏览器拦截。
JSONP 是 JSON with padding(填充式 JSON 或参数式 JSON)的简写。JSONP实现跨域请求的原理简单的说,就是动态创建<script>标签,然后利用<script>的src 不受同源策略约束来跨域获取数据。
JSONP 由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数。回调函数的名字一般是在请求中指定的。而数据就是传入回调函数中的 JSON 数据。

后端服务

    @RequestMapping(value = "jsonp",method = RequestMethod.GET)
    @ResponseBody
    public Object jsonp(@RequestParam(value = "callback",required = false) String callback){
        Map<String,Object> map= new HashMap<>();
        map.put("a",123);
        map.put("b","234");
        if(StringUtils.isEmpty(callback)){
            return map;
        }
        return callback+"("+ JSON.toJSONString(map)+")";
    }
  • jQuery封装JSONP
$.getJSON(
"http://localhost:9999/aop/jsonp?callback=?", 
function(data){
    console.log(data);
});

或者:
$.ajax({
        type: "GET",
        url: "http://localhost:9999/aop/jsonp",
        dataType: "jsonp",
        headers: {
                "Accept" : "application/json; charset=utf-8",
                "Content-Type": "application/javascript; charset=utf-8",
                "Access-Control-Allow-Origin" : "*"
            },
        success: function (result) {
            console.log(result);
        },
        error: function (xhr, errorText) {debugger;
            console.log('Error ' + xhr.responseText);
        }
});
  • 动态创建script标签
function handleResponse(data){
  console.log(data);
}
var script = document.createElement("script");
script.src = "http://localhost:9999/aop/jsonp?callback=handleResponse";
document.body.insertBefore(script, document.body.firstChild);

相关文章

  • 对jsonp 的理解认识

    什么是跨域?为什么要跨域呢?听说jsonp能. 为什么jsonp能跨域呢?什么时候使用jsonp?怎么使用json...

  • 复习jsonp和promise

    一.jsonp 1.jsonp是跨域访问api,ajax不能跨域 2.在vue中使用jsonp首先要安装jsonp...

  • #hello,JS:15 同源策略 & 跨域(JSONP)

    跨域有几种常见的方式?你有没有跨域使用的经验? 方式: 使用jsonp实现跨域?使用cors实现跨域?浏览器另类的...

  • JavaScript - GET/POST及跨域方法

    xhr 原生方法请求 window fetch 方法 关于跨域 利用JSONP实现跨域调用 使用 CORS(跨域资...

  • 常见跨域解决方案

    跨域 JSONP 使用 标签不受同源策略影响的特性,作为Ajax传输技术称为JSONP。 使用JSONP时,需要服...

  • 跨域上传图片并预览

    跨域上传文件 之前解决跨域问题都是使用的JQuery的JSONP类型的Ajax请求,JSONP原理是让服务器把数据...

  • 跨域的4种实现方式

    1.使用JSONP实现跨域 HTML代码 server.js 2.使用CORS实现跨域 html代码 server...

  • 浏览器跨域问题,教你手写实现jsonp跨域

    跨域概述为什么会有跨域跨域解决办法:1、jsonp;2、后台代理手写实现jsonp跨域(包括服务器端代码) 跨域问...

  • ajax跨域请求

    ajax跨域请求(jsonp) 利用JSONP解决AJAX跨域问题的原理与jQuery解决方案JSONP jQue...

  • 使用JSONP解决ajax跨域

    在日常开发中,不免遇到跨域的问题。在这里我们介绍使用Jsonp来解决ajax跨域的问题 什么是跨域? 跨域,指的是...

网友评论

    本文标题:跨域JSONP使用

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