• jsonp


    跨域

      域名或者端口不同的请求称为跨域,ajax请求默认不允许跨域,但是引入js文件允许跨域

    如何解决ajax请求跨域问题

    设有manage_taotao和web_taotao两个项目,已设置本地域名,要在web的项目中跨域请求manage中的地址。在b.htm文件中

    <script type="text/javascript">
        function fun(msg){
            console.log(msg)
        }
    </script>
    <script type="text/javascript" src="http://manage.taotao.com/rest/a/origin?callback=fun"></script>

    而在manage项目中controller层

    @Controller
    public class AController {
        @RequestMapping("a/origin")
        @ResponseBody
        public String origin(String callback) throws JsonProcessingException {
            ObjectMapper mapper=new ObjectMapper();
            Map<String, Object> map=new HashMap<String, Object>();
            map.put("妈妈", "she");
            map.put("age", 50);
            String m = mapper.writeValueAsString(map);
            return callback+"("+m+")";
        }
    }

    引入的js文件能直接接收路径返回的值,本来是json字符串,但b.htm不能直接解析该字符串,所以将该json字符串用 方法名() 的形式包围,在解析时提前定义方法,就可以在控制台打印该字符串

    尝试:在web项目引入manage项目中的js文件,再由该文件调用请求行吗?

    <script type="text/javascript" src="http://manage.taotao.com/js/testOrigin.js"></script> 
    <script type="text/javascript">
        alert(test())
    </script>

    manage项目中有该js

    ;!function(global){
        function test(){
            $.ajax({
            url:"http://manage.taotao.com/rest/a/origin",
            success:function(data){
                return data
            }
        })
        }
        global.test=test
    }(this)

    测试后,仍然出现ajax跨域请求问题,将js的路径改为工程下的绝对路径,发现访问的是web项目下的地址,说明manage项目中的该js被加载到了web项目服务中,这样访问本质上和直接访问没有什么区别。

    jsonp

      1.通过script标签可以跨域请求的特性,加载资源

      2.将加载的资源(通过一个方法名将数据包裹)当作是js脚本解析

      3.定义一个回调函数,获取传入的数据

    jquery中封装了jsonp技术。在b.htm中写

    <script type="text/javascript">
    $.ajax({
        url:"http://manage.taotao.com/rest/a/origin",
        dataType:"jsonp",
        success:function(msg){
            console.log(msg)
        }
    })
    </script>

    controller不变,可以获得结果

  • 相关阅读:
    @JSONFORMAT
    在控制台下运行jar文件出现的问题
    Windows 环境下执行 .sql 格式文件方式
    本地项目上传到git的详细步骤
    tomcat 处理请求url带特殊字符
    maven scope详解
    springboot+maven切换成oracle
    tomcat 处理http post请求配置
    mysql远程访问localhost权限
    Tomcat配置 访问jsp/html页面
  • 原文地址:https://www.cnblogs.com/psxfd4/p/11689667.html
Copyright © 2020-2023  润新知