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
相关推荐
基于ajax方式的跨域请求jsonp的前后台代码
一般的解决方案是使用服务器代理(由同域服务器跨域请求后返回),但导致过于复杂(参见:Java-webservice-CXF-SOAP服务.docx服务器代理)。 如果服务器能够操作,也可以使用JSONP允许跨域请求。
script元素的src属性能设置URL并发起HTTP GET请求实现脚本操作HTTP可以跨域通信而不受限与同源策略,接下来为大家详细介绍下Http跨域请求实现,感兴趣的你可以参考下哈
本篇文章主要介绍了详解Java Ajax jsonp 跨域请求,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要介绍了详解java 中Spring jsonp 跨域请求的实例的相关资料,jsonp 可用于解决主流浏览器的跨域数据访问的问题,需要的朋友可以参考下
很庆幸,我又见到了末日后新升的太阳,所以我...如果要进行跨域请求,我们可以通过使用html的script标记来进行跨域请求,并在响应中返回要执行的script代码,其中可以直接使用JSON传递javascript对象。这种跨域的通讯方
本篇文章主要介绍了详解Ajax跨域(jsonp) 调用JAVA后台 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
axios默认是没有jsonp 跨域请求的方法的。一般来说流行的做法是将跨域放在后台来解决,也就是后台开发人员添加跨域头信息。 例如java中的 header,response.setHeader("Access-Control-Allow-Origin", ...
最近一直在搞公众号前台开发,遇到了ajax跨域请求的问题,像地区的省-市-县三级联动、汽车品牌-车系-车款的三级联动查询等都需要调用外部接口(其他工程项目的接口)完成。下面就分享一下个人解决跨域请求的方案,当然...
day17代码:springBoot整合JSONP。Spring boot 实现json和jsonp格式数据,接口共用,Spring Boot支持JSONP跨域请求数据(Ajax的jsonp)。
2022夏招、秋招高频面试真题及答案,...所有,通过Chrome查看所有JSONP发送的Get请求都是js类型,而非XHR。 缺点: 只能使用Get请求 不能注册success、error等事件监听函数,不能很容易的确定JSONP请求是否失败 JSONP
html标签中src属性,只支持get请求,允许跨域 jsonp格式eval jsonp格式eval ifram之间交互,window.posMessage方法发送内容应(但是字符串长度限制255个) 使用参考文档:...
finereport是一款企业级的表格制作软件,此文档讲述了在此表格制作软件中实现ajax跨域异步单点登录的具体方法,包括操作步骤和实现代码等。
面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...
javaTcping 咸鱼项目,大佬轻喷,感谢。 本项目使用Jfinal框架,可打包成可执行jar. ...访问API(支持JSONP跨域请求。): 返回结果为JSON格式: { "ms": "154",//延迟 "status": "true"//端口状态 }
一、通过jsonp跨域 在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的。但是,在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的。 比如,有个a.html页面,它里面的代码...
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的...
85. get 和 post 请求有哪些区别? 42 86. 如何实现跨域? 43 87.说一下 JSONP 实现原理? 49 九、设计模式 49 88. 说一下你熟悉的设计模式? 49 89. 简单工厂和抽象工厂有什么区别? 49 十、Spring / Spring MVC 52...
JSON是一种数据交换格式,而JSONP是一种依靠开发人员创造出的一种非官方跨域数据交互协议。 script标签经常被用来加载不同域下的资源,可以绕过同源策略。(有src属性的都可以获取异域文件)。 如果请求的这个远程...
能很好的帮助其他项目做前后端分析,并且不需要其他子系统关心权限,并且该项目支持跨域请求 功能介绍 * sso登录:统一登录后,跳转任何子系统不需要再次登录 * 鉴权:在子项目中,filter拦截所有数据请求转发到sso...