• jsonp解决跨域问题


    跨域

      就是由于JavaScript同源策略的限制,使得a.com域名下的js无法操作b.com或c.a.com域名下的对象或数据。

          简单理解同一个域就是:相同域名、相同端口、相同协议!

    JS部分(使用jQuery):

    1 var token = sa5d6a4d456ca5d46;
    2 $.ajax({
    3     url : "/user/token/" + token + ".action",
    4     dataType : "jsonp",
    5     type : "GET",
    6     success : function(data){    
    7     }
    8 });

    后台部分(SpringMVC):

    方式一:

     1 //解决跨域问题方法一:
     2     @RequestMapping(value="/user/token1/{token}",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     3     @ResponseBody
     4     public String getUserByToken1(@PathVariable String token, String callback){
     5         MyResult result = tokenService.getUserByToken(token);
     6         //响应结果之前,判断是否为jsonp请求
     7         if (StringUtils.isNotBlank(callback)) {
     8             //把结果拼成一个js语句响应
     9             return callback + "(" + JsonUtils.objectToJson(result)  + ");";
    10         }
    11         return JsonUtils.objectToJson(result);
    12     }

     方式二(使用Spring的工具类):

    //解决跨域问题方法二:
        @RequestMapping(value="/user/token/{token}")
        @ResponseBody
        public Object getUserByToken2(@PathVariable String token, String callback){
            MyResult result = tokenService.getUserByToken(token);
            //响应结果之前,判断是否为jsonp请求
            if (StringUtils.isNotBlank(callback)) {
                //把结果封装成一个js语句响应
                MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(result);
                mappingJacksonValue.setJsonpFunction(callback);
                return mappingJacksonValue;
            }
            return result;
        }
  • 相关阅读:
    禅道学习(一)
    遍历
    php特性
    jsonRPC
    model
    水仙花数(详细2
    水仙花数(详细1
    递归求n 项和
    poj 1651
    nyist 289
  • 原文地址:https://www.cnblogs.com/gxc6/p/9482131.html
Copyright © 2020-2023  润新知