`
doing19852810
  • 浏览: 3292 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

java跨域请求-JSONP

阅读更多

java  web中如何跨域请求呢?

使用jsonp,详情请参考:http://json-p.org/

页面代码如下:

 

<!DOCTYPE html>  
<html>  
<head lang="en">  
    <meta charset="UTF-8">  
    <title></title>  
    <script type="application/javascript"  >  
        function jsonpCallback(result) {    
            alert(JSON.stringify(result));    
            /*for(var i in result) {    
                alert(i+":"+result[i]);//循环输出a:1,b:2,etc.    
            }  */  
        }    
        var JSONP=document.createElement("script");    
        JSONP.type="text/javascript";    
        JSONP.src="http://192.168.0.100:8080/tv_mobile/video/text2?callback=jsonpCallback";    
        document.getElementsByTagName("head")[0].appendChild(JSONP);    
     </script>  
</head>  
<body>  
  
</body>  
</html> 

 

在浏览器中访问的效果:

 

 

 

 

后台采用spring mvc:

@ResponseBody  
    @RequestMapping(value = "/text2",produces=SystemHWUtil.RESPONSE_CONTENTTYPE_JAVASCRIPT2 )  
    public String text2(HttpServletRequest request, HttpServletResponse response,String contentType2,String callback)  
            throws IOException {  
        String content = null;  
        Map map = new HashMap();  
  
        map.put("fileName", "a.txt");  
        content=JSONPUtil.getJsonP(map, callback);  
        System.out.println(content);  
        return content;  
  
    }  

 

 

JSONPUtil.getJsonP 静态方法的实现如下:

/*** 
     * 用于jsonp调用 
     * @param map : 用于构造json数据 
     * @param callback : 回调的javascript方法名 
     * @return 
     */  
    public static String getJsonP(Map map,String callback)  
    {  
        ObjectMapper mapper = new ObjectMapper();  
        String content = null;  
        try {  
            content = mapper.writeValueAsString(map);  
            System.out.println(content);  
        } catch (JsonGenerationException e) {  
            e.printStackTrace();  
        } catch (JsonMappingException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        if(ValueWidget.isNullOrEmpty(callback)){  
            return content;  
        }  
        return callback+"("+content+")";  
    } 

 

依赖jackson 库

后台返回的内容是:jsonpCallback({"fileName":"a.txt"})

content type是

 

注意:后台返回的形式是:函数名(参数),此处的函数名就是回调函数的名称

 

参考:

spring mvc设置应答体的content type

AJAX 跨域请求 - JSONP获取JSON数据:http://justcoding.iteye.com/blog/1366102

 

App Framework发送JSONP请求(3):

http://hw1287789687.iteye.com/blog/2190719

分享到:
评论

相关推荐

    ajax跨域请求jsonp前后台代码

    基于ajax方式的跨域请求jsonp的前后台代码

    跨域WebService请求-Nginx_SOAP服务_Ajax客户端.docx

    一般的解决方案是使用服务器代理(由同域服务器跨域请求后返回),但导致过于复杂(参见:Java-webservice-CXF-SOAP服务.docx服务器代理)。 如果服务器能够操作,也可以使用JSONP允许跨域请求。

    借助script进行Http跨域请求:JSONP实现原理及代码

    script元素的src属性能设置URL并发起HTTP GET请求实现脚本操作HTTP可以跨域通信而不受限与同源策略,接下来为大家详细介绍下Http跨域请求实现,感兴趣的你可以参考下哈

    详解Java Ajax jsonp 跨域请求

    本篇文章主要介绍了详解Java Ajax jsonp 跨域请求,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    详解java 中Spring jsonp 跨域请求的实例

    主要介绍了详解java 中Spring jsonp 跨域请求的实例的相关资料,jsonp 可用于解决主流浏览器的跨域数据访问的问题,需要的朋友可以参考下

    js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)

    很庆幸,我又见到了末日后新升的太阳,所以我...如果要进行跨域请求,我们可以通过使用html的script标记来进行跨域请求,并在响应中返回要执行的script代码,其中可以直接使用JSON传递javascript对象。这种跨域的通讯方

    详解Ajax跨域(jsonp) 调用JAVA后台

    本篇文章主要介绍了详解Ajax跨域(jsonp) 调用JAVA后台 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    vue使用axios跨域请求数据问题详解

    axios默认是没有jsonp 跨域请求的方法的。一般来说流行的做法是将跨域放在后台来解决,也就是后台开发人员添加跨域头信息。 例如java中的 header,response.setHeader("Access-Control-Allow-Origin", ...

    ajax前台后台跨域请求处理方式

    最近一直在搞公众号前台开发,遇到了ajax跨域请求的问题,像地区的省-市-县三级联动、汽车品牌-车系-车款的三级联动查询等都需要调用外部接口(其他工程项目的接口)完成。下面就分享一下个人解决跨域请求的方案,当然...

    day17代码:springBoot整合JSONP

    day17代码:springBoot整合JSONP。Spring boot 实现json和jsonp格式数据,接口共用,Spring Boot支持JSONP跨域请求数据(Ajax的jsonp)。

    2022最新Java面试题及答案总结

    2022夏招、秋招高频面试真题及答案,...所有,通过Chrome查看所有JSONP发送的Get请求都是js类型,而非XHR。 缺点: 只能使用Get请求 不能注册success、error等事件监听函数,不能很容易的确定JSONP请求是否失败 JSONP

    javaweb 开发解决跨域问题的N种方法

    html标签中src属性,只支持get请求,允许跨域 jsonp格式eval jsonp格式eval ifram之间交互,window.posMessage方法发送内容应(但是字符串长度限制255个) 使用参考文档:...

    表格制作软件中实现ajax跨域异步单点登录的方法

    finereport是一款企业级的表格制作软件,此文档讲述了在此表格制作软件中实现ajax跨域异步单点登录的具体方法,包括操作步骤和实现代码等。

    Java常见面试题208道.docx

    面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...

    javaTcping:javaTcping

    javaTcping 咸鱼项目,大佬轻喷,感谢。 本项目使用Jfinal框架,可打包成可执行jar. ...访问API(支持JSONP跨域请求。): 返回结果为JSON格式: { "ms": "154",//延迟 "status": "true"//端口状态 }

    javascript跨域的4种方法和原理详解

    一、通过jsonp跨域 在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的。但是,在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的。 比如,有个a.html页面,它里面的代码...

    常见的javascript跨域通信方法

    JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的...

    史上最全java面试,103项重点知识,带目录

    85. get 和 post 请求有哪些区别? 42 86. 如何实现跨域? 43 87.说一下 JSONP 实现原理? 49 九、设计模式 49 88. 说一下你熟悉的设计模式? 49 89. 简单工厂和抽象工厂有什么区别? 49 十、Spring / Spring MVC 52...

    javascript实现跨域的方法汇总

     JSON是一种数据交换格式,而JSONP是一种依靠开发人员创造出的一种非官方跨域数据交互协议。 script标签经常被用来加载不同域下的资源,可以绕过同源策略。(有src属性的都可以获取异域文件)。 如果请求的这个远程...

    civism-sso:基于springmvc+redis+shiro 实现的分布式单点登录系统

    能很好的帮助其他项目做前后端分析,并且不需要其他子系统关心权限,并且该项目支持跨域请求 功能介绍 * sso登录:统一登录后,跳转任何子系统不需要再次登录 * 鉴权:在子项目中,filter拦截所有数据请求转发到sso...

Global site tag (gtag.js) - Google Analytics