zoukankan      html  css  js  c++  java
  • 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;
        }
  • 相关阅读:
    Java后端WebSocket的Tomcat实现
    Shiro session和Spring session一样吗?
    HTTP请求类
    JSP页面中的时间显示问题
    Oracle在linux中相关设置操作
    关于BigDecimal类型在jsp页面中进行除法运算问题
    Spring与Redis的实现
    gson介绍
    busybox介绍
    vsftp中426 Failure writing network stream的错误解决
  • 原文地址:https://www.cnblogs.com/gxc6/p/9482131.html
Copyright © 2011-2022 走看看